亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dsp.h

?? a dsp dll and sample
?? H
字號:
// DSP.h: interface for the DSP class.
//////////////////////////////////////////////////////////////////////

#ifndef _DSP_CLASS
#define _DSP_CLASS

#include <string>
#include <fstream.h>
#include <deque>
#include <math.h>

#ifndef AFX_EXT_CLASS
#define AFX_EXT_CLASS
#endif

#include "StdAfx.h"

#ifdef UNIX_SYSTEM_
	#define TRUE			1
	#define	FALSE			0

	#ifndef BOOL
		typedef BYTE			BOOL;
	#endif
	#ifndef DWORD
		typedef unsigned long	DWORD;
	#endif
	#ifndef BYTE
		typedef unsigned char	BYTE;
	#endif
	#ifndef SOCKET
		typedef int				SOCKET;
	#endif
#endif

#define SECT_MAX_SIZE	0xFFF			//分段傳送時段的最大尺寸

class AFX_EXT_CLASS DSPACT;

//在所有的DSPACT派生類的頭文件中必需包含的宏定義
#define SELF_SERIALIZE(classid,className,base_className) \
	public: \
		virtual char* GetClassID()		{return classid;} \
		virtual bool  IsKindOf(char* lpClassName){return (::strcmp(className,lpClassName)==0);}\
	protected: \
		virtual BYTE  GetClassLevel()	{return (base_className::GetClassLevel()+1);} \

//返回DSPPACT派生類對象的函數的指針
#define DSPGETOBJFUNC(varN)		DSPACT* (*varN)(const std::string& strID)		
#define CASTDSPGETOBJFUNC		DSPACT* (*)(const std::string& strID)		

//緩沖區分段接收函數的指針
#define DSPSECTRECV(varN)		bool (*varN)(const char* const lpBuff,int nBuffLen,bool bLast)
#define CASTDSPSECTRECV			bool (*)(const char* const lpBuff,int nBuffLen,bool bLast)

//緩沖區分段傳送函數的指針
#define DSPSECTSEND(varN)		bool (*varN)(char** const lpBuff,int& nBuffLen,bool& bContinue)
#define CASTDSPSECTSEND			bool (*)(char** const lpBuff,int& nBuffLen,bool& bContinue)

//壓縮函數的指針
#define	DSPCOMPRESSFUNC(varN)	bool (*varN)(char** const lpBuff,int& nBuffLen)
#define	CASTDSPCOMPRESSFUNC		bool (*)(char** const lpBuff,int& nBuffLen)

//解壓縮函數的指針
#define DSPUNCOMPRESSFUNC(varN)	bool (*varN)(char** const lpBuff,int& nBuffLen,bool bStart)
#define CASTDSPUNCOMPRESSFUNC	bool (*)(char** const lpBuff,int& nBuffLen,bool bStart)
	

class AFX_EXT_CLASS DSP  
{
public:
	struct AFX_EXT_CLASS _DSPPACKET;
private:
	DSP(){};
	~DSP(){};
	friend struct _DSPPACKET;
	struct _DSPHEADER;
	struct _DSPATTRHEADER;
	struct _DSPVALUEHEADER;
	struct _DSPACTREG;
	static std::deque<_DSPACTREG*>	dqActReg;

	static inline DSP::_DSPACTREG*	FindClassID(const std::string& strID);
	static inline DSPACT*			GetDSPObject(std::string& strID,DWORD& dwData);
	static inline WORD				CheckSumAttr(const char *lpHead,const char *lpTail);

public:
	enum _DSPERRTYPE
	{
		ERR_RECV_HEADER			=10000,
		ERR_FIND_HEADER,
		ERR_RECV_ATTRHEADER,
		ERR_VERIFY_ATTRHEADER,
		ERR_RECV_CLASSID,
		ERR_NOTGET_DSPACT,
		ERR_RECV_ATTRSIZE,
		ERR_SET_ATTR_BUFF,
		ERR_UNCOMPRESS,
		ERR_RECV_ATTR_SECT,
		ERR_RECV_ATTRVALUE,
		ERR_RECV_PACKETCRC,
		ERR_RECV_PACKET_CRC,
		ERR_RECV_NAME,

		ERR_SEND_HEADER			=11000,
		ERR_SEND_ATTRHEADER,
		ERR_SEND_CLASSID,
		ERR_SERIALIZE_ATTR,
		ERR_SEND_ATTR_SECT,
		ERR_SEND_ATTRSIZE,
		ERR_SEND_ATTRVALUE,
		ERR_SEND_PACKETCRC,
		ERR_SEND_NAME,
		ERR_COMPRESS,
	};

	struct AFX_EXT_CLASS _DSPERROR
	{
		BYTE			byClassLevel;			//類深度
		DWORD			dwAttrNo;				//屬性個數編號
		int				nErrorNo;				//錯誤代碼
		std::string		strErrDetail;			//錯誤描述
	};

	struct AFX_EXT_CLASS _DSPPACKET
	{
		//DSP包結構
		timeval			Timeout;				//接收Socket時的超時時間
		DWORD			dwData;					//在注冊類時指定的該類的附加數據
		bool&			bKeepRun;				//是否繼續運行,通過這個布爾變量,可以隨時中止序列化或反序列化過程
		
	private:
		_DSPERROR		LastError;				//保存最近一個錯誤的描述
		char			chData1[6];
		char			chData2[2];
		char			chBuff[sizeof(DWORD)];	//保存臨時數據的緩沖區
		char*			lpAttrBuff;				//接收屬性的緩沖區的首地址
		std::string		strClassID;				//保存ClassID的值
		DWORD			dwAttrSize;				//當前接收緩沖區的長度
		WORD			wPacketCRC;				//包的總的CRC
		bool			bAttrRecvComplete;		//屬性是否已經接收完成
		bool			bCompressAttr;			//屬性是否被壓縮
		DSPACT*			pDspAct;				//保存轉換成對象后的基類對象的指針

		inline bool		FindHeader();
		inline bool		Recv(SOCKET sock,char* const lpBuff,WORD wBuffLen,WORD* pCrc=NULL);
		inline bool		Recv(ifstream& ifs,char* const lpBuff,WORD wBuffLen,WORD* pCrc=NULL);
		inline bool		Send(SOCKET sock,const char* const lpBuff,WORD wBuffLen,WORD* pCrc=NULL);
		inline bool		Send(ofstream& ofs,const char* const lpBuff,WORD wBuffLen,WORD* pCrc=NULL);
		inline bool		Recv(char** const lpUDPBuff,int& nUDPSize,char* const lpBuff,WORD wBuffLen,WORD* pCrc=NULL);
		inline bool		Send(char** const lpUDPBuff,int& nUDPSize,const char* const lpBuff,WORD wBuffLen,WORD* pCrc=NULL);

		inline DSPACT*	ReadError(_DSPERRTYPE errNo,BYTE classLevel,BYTE attrNo,DSPACT* pAct);
		inline bool		WriteError(_DSPERRTYPE errNo,BYTE classLevel,BYTE attrNo);
		inline bool		WriteObject(char** const lpUDPBuff,int& nUDPBuffLen,DSPACT& act);
		inline DSPACT*	ReadObjectFromIfs(ifstream& ifs,DSPACT* pAct);
		inline DSPACT*	ReadObjectFromTCP(SOCKET sock,DSPACT* pAct);
		inline DSPACT*	ReadObjectFromUDP(char** lpUDPBuff,int& nUDPBuffLen,DSPACT* pAct);
		inline DSPACT*	ReadObject(char** lpUDPBuff,int& nUDPBuffLen,DSPACT* pAct);

		inline bool		Serialize(SOCKET sock,const char* lpName,BYTE byNameLen,const char* lpValue,WORD usValueLen,bool bSendValueLen);
		inline bool		Serialize(ofstream& ofs,const char* lpName,BYTE byNameLen,const char* lpValue,WORD usValueLen,bool bSendValueLen);

	public:
		_DSPPACKET(bool& bRun):bKeepRun(bRun),dwAttrSize(0){Timeout.tv_sec=10;Timeout.tv_usec=0;};
		inline void	Empty()
		{
			pDspAct		=NULL;	
			dwAttrSize	=0;
			wPacketCRC	=0;
		};
		inline	_DSPERROR* const GetLastError(){return &LastError;};

		void	SetParameter(bool bCompress=false,bool bVerifyCRC=true,BYTE byInitType=0);
		bool	IsVerifyCrc();
		bool	IsCompress();
		DSPACT*	ReadObject(char* lpUDPBuff,int nUDPBuffLen,DSPACT* pAct=NULL);
		DSPACT*	ReadObject(SOCKET sock,DSPACT* pAct=NULL);
		DSPACT*	ReadObject(ifstream& ifs,DSPACT* pAct=NULL);
		bool	Read(char& attr);
		bool	Read(BYTE& attr);
		bool	Read(short& attr);
		bool	Read(WORD& attr);
		bool	Read(int& attr);
		bool	Read(DWORD& attr);
		bool	Read(bool& attr);
		bool	Read(std::string& attr,DWORD dwLen);
		bool	Read(char* const pAttr,DWORD dwLen);
		bool	Read(DSPACT& attr);

 inline	bool	WriteObject(SOCKET sock,sockaddr_in& to,char* const lpUDPBuff,int nUDPBuffLen,DSPACT& act);
		bool	WriteObject(SOCKET sock,sockaddr_in& to,int nUDPSize,DSPACT& act);
		bool	WriteObject(SOCKET sock,DSPACT& act);
		bool	WriteObject(ofstream& ofs,DSPACT& act);
		void	Write(int attr);
		void	Write(DWORD attr);
		void	Write(bool attr);
		void	Write(const std::string& attr);
		void	Write(char* const pAttr,DWORD dwLen,BOOL bLast=TRUE);
		void	Write(DSPACT& attr,bool bCompress=false,bool bVerifyCRC=true,BYTE byInitType=0);
		
		#ifndef	UNIX_SYSTEM_
			void	Write(const CString& attr);
			bool	Read(CString& attr,DWORD dwLen);
			bool	Serialize(const CString& strValue,const char* lpName=NULL,BYTE nNameLen=0);
			bool	UnSerialize(CString& strValue);
		#endif

		void	SerializeStart(ofstream& ofs,DSPCOMPRESSFUNC(pFun)=NULL);
		bool	Serialize(int nValue,const char* lpName=NULL,BYTE nNameLen=0);
		bool	Serialize(BYTE byValue,const char* lpName=NULL,BYTE nNameLen=0);
		bool	Serialize(bool bValue,const char* lpName=NULL,BYTE nNameLen=0);
		bool	Serialize(std::string& strValue,const char* lpName=NULL,BYTE nNameLen=0);
		bool	Serialize(char* lpBuff,int nBuffLen,const char* lpName=NULL,BYTE nNameLen=0,DSPSECTSEND(pFunc)=NULL);
		bool	Serialize(DSPACT& act,const char* lpName=NULL,BYTE nNameLen=0);
		bool	SerializeEnd();
		bool	UnSerializeStart(ifstream& ifs,DSPUNCOMPRESSFUNC(pFun)=NULL);
 inline	BYTE	IsKinkOf(std::string& strName);
 inline	bool	UnSerialize(DWORD& value,int& nValueLen);
		bool	UnSerialize(int& nValue);
		bool	UnSerialize(DWORD& dwValue);
		bool	UnSerialize(short& sValue);
		bool	UnSerialize(WORD& wValue);
		bool	UnSerialize(char& cValue);
		bool	UnSerialize(BYTE& byValue);
		bool	UnSerialize(std::string& strValue);
		bool	UnSerialize(char* pValue,int* nValueLen);
	};

	static bool		RegisterAct(const char* classID,DSPGETOBJFUNC(dspActFun),DWORD dwData=0);
	static SOCKET	ConnectTo(const char *lpSrvName,int nSrvPort,bool bInternet=true,int nRetryCount=5);
	static SOCKET	GetUDPSocket(int nListenPort=-1,bool bInternet=true);
	static SOCKET	GetTCPSocket(int nListenPort=-1,bool bInternet=true);
	static bool		GetAddrByName(const char *lpName,WORD port,sockaddr_in& addr);
	static void		GetAddrByIP(const char *lpIP,WORD port,sockaddr_in& addr,bool bInternet=true);
	static int		WaitRecvUDP(SOCKET sock,char *lpUDPBuff,int nUDPBuffLen,struct sockaddr_in& from,int nTimeoutSec=30);
	static DWORD	GetFileSize(const char* lpFilename);
	static DWORD	CreateNullFile(const char* lpFilename,int nSize,bool bAppend=true);
	static void		SafeRelease();

	static inline BOOL	OpenIfstreamForRead(ifstream& ifs,const char* const lpFileName,int nMode=0,int nShareMode=filebuf::openprot)
	{	ifs.open(lpFileName,ios::in|ios::binary|ios::nocreate|nMode,nShareMode);
		return ifs.is_open();
	};

	static inline BOOL	OpenOfstreamForWrite(ofstream& ofs,const char* const lpFileName,int nMode=0,int nShareMode=filebuf::sh_write||filebuf::sh_read)
	{	ofs.open(lpFileName,ios::out|ios::binary|nMode,nShareMode);
		return ofs.is_open();
	};
};


class AFX_EXT_CLASS DSPACT  
{
public:
	DSPACT(){};
	virtual ~DSPACT(){};
	virtual char *	GetClassID()=0;
	virtual bool	IsKindOf(char* lpClassName)=0;

protected:
	friend	struct	DSP::_DSPPACKET;
	virtual void	Init(BYTE byType){};
	virtual BYTE	GetClassLevel(){ return 0;	};
	virtual bool	AttrSectRecv(BYTE byClassLevels,BYTE byAttrNo,const char* const lpBuff,DWORD dwLen,bool bLast);
	virtual bool	AttrSectSend(BYTE byClassLevels,BYTE byAttrNo,char** const lpBuff,DWORD& dwLen,bool& bContinue);
	virtual bool	Serialize(BYTE byClassLevels,BYTE byAttrNo,DSP::_DSPPACKET &dsp);
	virtual bool	UnSerialize(BYTE byClassLevels,BYTE byAttrNo,DSP::_DSPPACKET &dsp,DWORD dwLen);
	virtual bool	Compress(char** const lpBuff,DWORD& dwLen);
	virtual bool	UnCompress(char** const lpBuff,DWORD dwLen,char* lpUnBuff,WORD& wUnLen,bool bStart);
};

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩免费电影| 欧美精品一二三| 欧美日本视频在线| 久久久久久久久久久久久久久99| 亚洲欧美日韩在线| 精品一区二区三区免费| 91麻豆国产福利精品| 精品国产91洋老外米糕| 一区二区三区日韩精品视频| 国产aⅴ精品一区二区三区色成熟| 欧美亚男人的天堂| 亚洲色图欧洲色图婷婷| 国产乱码精品一区二区三区av| 欧美日本在线观看| 亚洲在线成人精品| 91黄色免费网站| 国产精品久久久久久一区二区三区| 狠狠色丁香婷婷综合久久片| 日韩午夜电影av| 日本不卡一二三| 777欧美精品| 一区二区三区日韩| 色婷婷精品大视频在线蜜桃视频 | 欧美aⅴ一区二区三区视频| 成人性色生活片| 国产视频视频一区| 国产91精品在线观看| 国产精品卡一卡二卡三| 成人在线一区二区三区| 国产精品国产精品国产专区不蜜| 成人av网站在线观看免费| 国产精品久99| 91影院在线免费观看| 国产精品久线在线观看| 99精品欧美一区二区三区小说| 国产精品乱人伦一区二区| 国产成人精品亚洲777人妖| 国产农村妇女毛片精品久久麻豆 | 日本亚洲免费观看| 精品少妇一区二区三区| 国产乱子伦一区二区三区国色天香| 精品av久久707| 成人免费视频网站在线观看| 久久午夜国产精品| 北条麻妃一区二区三区| 一区二区三区日本| 91精品在线免费观看| 久久99精品久久久久| 国产三级欧美三级| 99精品黄色片免费大全| 午夜视频久久久久久| 欧美电影免费观看完整版| 国产精品一区二区黑丝| 亚洲欧美一区二区不卡| 日韩一区二区高清| 国产suv精品一区二区883| 亚洲自拍偷拍网站| 欧美va在线播放| 97se亚洲国产综合自在线观| 亚洲高清三级视频| 国产丝袜欧美中文另类| 欧美伊人久久大香线蕉综合69| 婷婷久久综合九色国产成人| 精品免费日韩av| 91在线观看美女| 日韩成人一级大片| 中文字幕精品在线不卡| 欧美老女人在线| 粉嫩嫩av羞羞动漫久久久| 成人欧美一区二区三区视频网页| 欧美日韩一区二区三区不卡| 国产a久久麻豆| 男男gaygay亚洲| 亚洲欧美综合在线精品| 精品国产污污免费网站入口| 在线亚洲一区二区| 国产精品亚洲第一区在线暖暖韩国| 一区二区三区欧美亚洲| 国产欧美日韩中文久久| 91精品在线观看入口| 在线日韩一区二区| 国产高清无密码一区二区三区| 亚洲成人7777| 亚洲欧美成人一区二区三区| 欧美tickling网站挠脚心| 一本色道久久综合亚洲aⅴ蜜桃 | 国产99精品国产| 日韩av网站免费在线| 亚洲免费观看高清完整版在线观看 | 99热国产精品| 蜜桃久久久久久| 亚洲国产成人porn| 中文字幕综合网| 中文字幕精品一区二区精品绿巨人| 日韩欧美一区二区在线视频| 91久久久免费一区二区| 粗大黑人巨茎大战欧美成人| 久久精品国产亚洲a| 最新成人av在线| 中文字幕国产一区二区| 久久久91精品国产一区二区三区| 色综合久久综合网欧美综合网| 国产美女主播视频一区| 麻豆精品国产传媒mv男同| 日本 国产 欧美色综合| 日日摸夜夜添夜夜添精品视频| 亚洲综合在线电影| 亚洲综合av网| 首页国产欧美久久| 亚洲h在线观看| 亚洲第一狼人社区| 天天色综合天天| 天天综合天天做天天综合| 亚洲va欧美va人人爽| 亚洲永久精品大片| 亚欧色一区w666天堂| 午夜私人影院久久久久| 日韩国产在线观看| 美女精品自拍一二三四| 麻豆精品精品国产自在97香蕉| 久久www免费人成看片高清| 国内精品自线一区二区三区视频| 国产精品羞羞答答xxdd| 波多野结衣中文字幕一区二区三区| aaa亚洲精品| 欧美性猛交xxxx乱大交退制版 | 成人av电影在线| 在线免费视频一区二区| 777奇米成人网| 欧美精品一区二区三区高清aⅴ | 亚洲色欲色欲www| 亚洲精选在线视频| 日韩精品免费专区| 麻豆国产欧美日韩综合精品二区| 国产一区二区三区高清播放| 成人av资源网站| 在线观看日韩一区| 日韩午夜激情免费电影| 国产欧美精品一区二区色综合| 亚洲欧美成人一区二区三区| 午夜激情综合网| 国产成人综合在线| 在线观看日韩电影| 精品奇米国产一区二区三区| 国产精品对白交换视频| 亚洲福利视频三区| 国产美女久久久久| 欧美午夜影院一区| 久久综合九色综合久久久精品综合| 亚洲欧洲av在线| 久久成人18免费观看| 色妹子一区二区| 精品卡一卡二卡三卡四在线| 亚洲乱码日产精品bd | 亚洲国产sm捆绑调教视频 | 亚洲欧美偷拍另类a∨色屁股| 日本怡春院一区二区| 成人的网站免费观看| 欧美电影在哪看比较好| 国产精品嫩草影院com| 肉肉av福利一精品导航| 成人免费毛片高清视频| 日韩亚洲国产中文字幕欧美| 中文字幕一区二区三| 麻豆国产精品视频| 欧美性xxxxxxxx| 最好看的中文字幕久久| 国内精品久久久久影院薰衣草| 欧美中文一区二区三区| 自拍偷拍国产精品| 国产一区二三区| 91精品一区二区三区久久久久久| 亚洲免费色视频| 菠萝蜜视频在线观看一区| www亚洲一区| 日本不卡视频在线| 欧美精品在线观看一区二区| 亚洲猫色日本管| 成人高清免费观看| 国产日本欧美一区二区| 狠狠色综合日日| 日韩欧美一级在线播放| 日韩国产精品久久久| 欧美三级视频在线观看| 一区二区在线电影| jizzjizzjizz欧美| 国产日韩欧美制服另类| 另类的小说在线视频另类成人小视频在线 | 在线观看国产日韩| 最近中文字幕一区二区三区| 国产综合久久久久久鬼色| 欧美日韩高清在线| 午夜av电影一区| 欧美日韩一区在线| 午夜一区二区三区视频| 欧美日韩成人高清| 日本亚洲免费观看| 精品三级av在线| 国产成人精品影院| 国产精品久久久久久亚洲伦|