Panda3D
|
00001 #ifndef __RINGBUFFER_GM_H__ 00002 #define __RINGBUFFER_GM_H__ 00003 //////////////////////////////////////////// 00004 00005 // RHH 00006 //////////////////////////////////////////////////////////////////// 00007 // Class : GmRingBuffer 00008 // Description : This is an implemention of the membuffer with ring 00009 // buffer interface on it.... 00010 // 00011 // Main target right know is base class for network 00012 // stream buffering both input and output 00013 // 00014 // see BufferedReader_Gm 00015 // BufferedWriter_Gm 00016 // 00017 //////////////////////////////////////////////////////////////////// 00018 #include "membuffer.h" 00019 class RingBuffer_Slide : protected MemBuffer 00020 { 00021 protected: 00022 size_t _StartPos; 00023 size_t _EndPos; 00024 inline char * GetMessageHead(void); 00025 inline char * GetBufferOpen(void); 00026 inline void ForceWindowSlide(void); 00027 #define FastGetMessageHead() (_Buffer+_StartPos) 00028 #define FastAmountBeffered() (_EndPos - _StartPos) 00029 00030 inline bool PutFast(const char * data, size_t len); 00031 00032 public: 00033 inline size_t AmountBuffered(void); 00034 inline size_t BufferAvailabe(void); 00035 inline void ResetContent(void); 00036 00037 inline RingBuffer_Slide(size_t in_size = 4096); 00038 inline void FullCompress(void); 00039 inline void Compress(void); 00040 inline bool Put(const char * data, size_t len); 00041 inline bool Get(char * data, size_t len); 00042 }; 00043 00044 #include "ringbuffer_slide.i" 00045 00046 #endif //__RINGBUFFER_GM_H__ 00047 00048