// DataReceiver.h: interface for the CDataReceiver class. // ////////////////////////////////////////////////////////////////////// #ifndef DataBuffersH #define DataBuffersH #include #include "thread.h" #define ERR_DATA_END 1 #define ERR_DATA_ID -1 #define ERR_PACK_ID -2 #define ERR_DATA_SIZE -3 #define ERR_BUFFER_NUM -4 #define DTYPE_STYLETEMP 0 #define DTYPE_STYLEFILE 1 #define DTYPE_STYLESTATE 2 #define DTYPE_STYLEDATA 3 #define DTYPE_QAUPDATE 4 #define DTYPE_SONGFILE 5 #define DTYPE_NTUPDATE 6 #define DTYPE_STYLESHARE 7 #define DTYPE_STYLEINFO 8 #define DTYPE_ICONFILE 9 #define MAX_BUFFER_ID 0x7FFFFFF typedef struct tagDataBuffer { int idBuffer; int idUser; int idPack; int iClientType; int iDataType; int nDataSize; int nRecvSize; int tSeconds; char* pData; tagDataBuffer(){ memset( this, 0, sizeof(tagDataBuffer) ); } ~tagDataBuffer(){ if( pData ){ delete[] pData; pData = NULL; } } } DATABUFFER, *PDATABUFFER; #include using namespace std; typedef list< PDATABUFFER > DATABUFFERLIST; class CDataBufferManager { public: CDataBufferManager(); virtual ~CDataBufferManager(); int NewDataBuffer( int idUser, int iType, int nDataSize, char* pData=NULL, int iClientType=0 ); int ReceiveData( int idBuffer, int idPack, int nSize, char* pNewData ); int GetData( int idBuffer, int idPack, int& nSize, char*& pData); DATABUFFER * GetBuffer( int idBuffer ); void DeleteBuffer( int idBuffer ); void OnTimer(); private: CSema m_smProcess; int m_seqFileNo; DATABUFFERLIST m_lstBuffers; }; #endif // !defined(_DATARECEIVER_H_INCLUDED_)