亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
成人精品一区二区三区中文字幕| 国产风韵犹存在线视精品| 欧美电视剧在线观看完整版| 国产综合色视频| 午夜伊人狠狠久久| 亚洲欧美综合色| 精品国产一区二区三区av性色| 91论坛在线播放| 国产精品66部| 日精品一区二区三区| 亚洲激情图片qvod| 精品成人免费观看| 日韩欧美高清一区| 欧美日韩精品系列| 91麻豆高清视频| 99在线精品一区二区三区| 国产在线视频不卡二| 免费精品视频在线| 日韩和的一区二区| 图片区小说区国产精品视频| 一区二区在线观看视频在线观看| 中文字幕欧美日韩一区| 精品国产三级a在线观看| 9191成人精品久久| 欧美在线免费视屏| 一本色道久久综合亚洲aⅴ蜜桃| 成人在线综合网站| 成人动漫中文字幕| 成人免费电影视频| 国产a久久麻豆| 国产大陆亚洲精品国产| 国产原创一区二区| 国产精品综合久久| 国产成人在线观看免费网站| 国产乱码精品一区二区三| 紧缚奴在线一区二区三区| 精品一区免费av| 国产综合色产在线精品| 国产一区二区三区免费看| 激情五月婷婷综合网| 国产精品亚洲第一区在线暖暖韩国| 麻豆高清免费国产一区| 久久99国产精品久久| 精品亚洲成a人在线观看| 国产一区二区三区高清播放| 国产不卡免费视频| av电影天堂一区二区在线 | 国产精品一区二区久久精品爱涩| 视频在线观看91| 日本女优在线视频一区二区| 免费成人结看片| 国产乱子伦视频一区二区三区| 九色porny丨国产精品| 国产乱理伦片在线观看夜一区| 国产一区二区三区免费观看| 欧美绝品在线观看成人午夜影视| 欧美人成免费网站| 337p粉嫩大胆色噜噜噜噜亚洲| 久久精品无码一区二区三区| 国产精品美女久久久久久久| 亚洲一区二三区| 美女一区二区三区| 国产不卡高清在线观看视频| 日本韩国欧美在线| 69久久夜色精品国产69蝌蚪网| 26uuu久久天堂性欧美| 亚洲特级片在线| 丝袜诱惑亚洲看片| 国产成人免费在线观看| 色综合久久久久久久| 69久久99精品久久久久婷婷 | 亚洲另类在线视频| 免费观看日韩电影| 波波电影院一区二区三区| 欧洲生活片亚洲生活在线观看| 91精品国产高清一区二区三区| 久久综合久久综合九色| 亚洲欧美色一区| 另类欧美日韩国产在线| 成人av网址在线观看| 91精品福利在线一区二区三区 | 久久综合九色综合久久久精品综合 | 成av人片一区二区| 777奇米四色成人影色区| 欧美韩国日本不卡| 五月天激情综合| 欧美日韩高清一区| 久久综合色8888| 午夜激情综合网| 成人亚洲精品久久久久软件| 在线播放一区二区三区| 欧美激情中文不卡| 日韩极品在线观看| 91免费观看国产| 久久综合久久综合亚洲| 亚洲aⅴ怡春院| 成人18视频在线播放| 精品成人在线观看| 亚洲午夜在线视频| 不卡在线观看av| 久久亚洲影视婷婷| 日本欧美大码aⅴ在线播放| 色噜噜狠狠色综合中国| 国产欧美日本一区二区三区| 奇米四色…亚洲| 欧美在线观看你懂的| 国产精品毛片久久久久久久| 国产真实乱偷精品视频免| 欧美日韩国产系列| 亚洲精品视频在线观看免费| 粉嫩一区二区三区性色av| 91精品国产麻豆国产自产在线| 亚洲精品久久久蜜桃| 国产91在线观看丝袜| 欧美精品一区二区高清在线观看| 亚洲aaa精品| 欧美丝袜自拍制服另类| 成人免费一区二区三区视频| 国产黄人亚洲片| 久久久久久久久岛国免费| 狠狠色丁香婷综合久久| 91精品国产综合久久久蜜臀粉嫩| 国产精品一区二区三区99| 精品少妇一区二区三区在线播放| 日韩中文字幕91| 91精品欧美久久久久久动漫| 一区二区三区日韩精品视频| 99re视频精品| 亚洲欧美综合另类在线卡通| 国产69精品久久久久毛片| 久久嫩草精品久久久久| 国产精品一区二区三区网站| 久久久一区二区| 国产不卡一区视频| 中日韩免费视频中文字幕| 成人性生交大片免费看视频在线| 日本一区二区视频在线观看| 国产精品一区二区不卡| 欧美精品一区二区三区在线播放 | 久久久久久久电影| 国产伦精一区二区三区| 久久久99精品免费观看不卡| 国产一区二区三区免费| 久久久久久久久伊人| 成人午夜私人影院| 最新国产精品久久精品| 色噜噜狠狠色综合欧洲selulu| 亚洲影院免费观看| 欧美美女激情18p| 久久精品国产精品亚洲红杏| 久久精品在这里| 91麻豆文化传媒在线观看| 亚洲成人在线网站| 91精品国产高清一区二区三区| 久草精品在线观看| 国产精品乱人伦中文| 91黄色激情网站| 免费观看91视频大全| 国产午夜亚洲精品午夜鲁丝片| 北条麻妃一区二区三区| 亚洲va欧美va人人爽午夜| 精品噜噜噜噜久久久久久久久试看 | 午夜精品一区二区三区电影天堂| 911国产精品| 国产精品99精品久久免费| 亚洲欧美另类图片小说| 欧美精品在线观看播放| 国产原创一区二区三区| 一区二区三区成人| 欧美成人女星排行榜| 99在线精品观看| 免费在线观看视频一区| 国产精品理论片在线观看| 欧美人妖巨大在线| 国产成人精品亚洲777人妖| 亚洲精品乱码久久久久久久久| 91精品国产免费久久综合| 国产suv精品一区二区三区| 一区二区三区在线免费| 精品国产91久久久久久久妲己| 91在线丨porny丨国产| 麻豆精品久久久| 亚洲精选免费视频| 久久综合色婷婷| 欧美少妇一区二区| 成人av电影在线播放| 日韩av在线播放中文字幕| 国产精品三级av| 91精品国产综合久久精品app | 成人免费视频一区二区| 五月天亚洲婷婷| 中文字幕一区二区在线观看| 欧美日韩黄色一区二区| 成人午夜在线视频| 麻豆成人91精品二区三区| 亚洲精品免费看| 中文字幕av资源一区| 欧美成人高清电影在线| 欧美日韩亚洲丝袜制服| 97aⅴ精品视频一二三区|