提交 933300bc3ebd83c9f889cc75c3e2b5283f19457b

作者 LJH 李佳桓
1 个父辈 d7970fba

add

正在显示 1 个修改的文件 包含 83 行增加0 行删除
  1 +/*
  2 + * Copyright 2007 Stephen Liu
  3 + * For license terms, see the file COPYING along with this library.
  4 + */
  5 +
  6 +#ifndef __spmsgblock_hpp__
  7 +#define __spmsgblock_hpp__
  8 +
  9 +#include <stdio.h>
  10 +
  11 +class SP_Buffer;
  12 +class SP_ArrayList;
  13 +
  14 +class SP_MsgBlock {
  15 +public:
  16 + virtual ~SP_MsgBlock();
  17 +
  18 + virtual const void * getData() const = 0;
  19 + virtual size_t getSize() const = 0;
  20 +};
  21 +
  22 +class SP_MsgBlockList {
  23 +public:
  24 + SP_MsgBlockList();
  25 + ~SP_MsgBlockList();
  26 +
  27 + void reset();
  28 +
  29 + size_t getTotalSize() const;
  30 +
  31 + int getCount() const;
  32 + int append( SP_MsgBlock * msgBlock );
  33 + const SP_MsgBlock * getItem( int index ) const;
  34 + SP_MsgBlock * takeItem( int index );
  35 +
  36 +private:
  37 + SP_MsgBlockList( SP_MsgBlockList & );
  38 + SP_MsgBlockList & operator=( SP_MsgBlockList & );
  39 +
  40 + SP_ArrayList * mList;
  41 +};
  42 +
  43 +class SP_BufferMsgBlock : public SP_MsgBlock {
  44 +public:
  45 + SP_BufferMsgBlock();
  46 + SP_BufferMsgBlock( SP_Buffer * buffer, int toBeOwner );
  47 + virtual ~SP_BufferMsgBlock();
  48 +
  49 + virtual const void * getData() const;
  50 + virtual size_t getSize() const;
  51 +
  52 + int append( const void * buffer, size_t len = 0 );
  53 +
  54 +private:
  55 + SP_BufferMsgBlock( SP_BufferMsgBlock & );
  56 + SP_BufferMsgBlock & operator=( SP_BufferMsgBlock & );
  57 +
  58 + SP_Buffer * mBuffer;
  59 + int mToBeOwner;
  60 +};
  61 +
  62 +class SP_SimpleMsgBlock : public SP_MsgBlock {
  63 +public:
  64 + SP_SimpleMsgBlock();
  65 + SP_SimpleMsgBlock( void * data, size_t size, int toBeOwner );
  66 + virtual ~SP_SimpleMsgBlock();
  67 +
  68 + virtual const void * getData() const;
  69 + virtual size_t getSize() const;
  70 +
  71 + void setData( void * data, size_t size, int toBeOwner );
  72 +
  73 +private:
  74 + SP_SimpleMsgBlock( SP_SimpleMsgBlock & );
  75 + SP_SimpleMsgBlock & operator=( SP_SimpleMsgBlock & );
  76 +
  77 + void * mData;
  78 + size_t mSize;
  79 + int mToBeOwner;
  80 +};
  81 +
  82 +#endif
  83 +
注册登录 后发表评论