78 lines
1.7 KiB
C++
78 lines
1.7 KiB
C++
// DataReceiver.h: interface for the CDataReceiver class.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef DataBuffersH
|
|
#define DataBuffersH
|
|
|
|
#include <string.h>
|
|
#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 <list>
|
|
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_)
|