00001 00034 #ifndef LL_LLIOBUFFER_H 00035 #define LL_LLIOBUFFER_H 00036 00037 #include "lliopipe.h" 00038 00051 class LLIOBuffer : public LLIOPipe 00052 { 00053 public: 00054 LLIOBuffer(); 00055 virtual ~LLIOBuffer(); 00056 00064 U8* data() const; 00065 00069 S64 size() const; 00070 00079 U8* current() const; 00080 00084 S64 bytesLeft() const; 00085 00092 void clear(); 00093 00102 enum EHead 00103 { 00104 READ, 00105 WRITE 00106 }; 00107 00115 EStatus seek(EHead head, S64 delta); 00116 00117 public: 00118 /* @name LLIOPipe virtual implementations 00119 */ 00121 protected: 00125 virtual EStatus process_impl( 00126 const LLChannelDescriptors& channels, 00127 buffer_ptr_t& buffer, 00128 bool& eos, 00129 LLSD& context, 00130 LLPumpIO* pump); 00132 00133 protected: 00134 U8* mBuffer; 00135 S64 mBufferSize; 00136 U8* mReadHead; 00137 U8* mWriteHead; 00138 }; 00139 00140 #endif // LL_LLIOBUFFER_H