sptunnelimpl.hpp

来自「spserver 是一个实现了半同步/半异步(Half-Sync/Half-As」· HPP 代码 · 共 117 行

HPP
117
字号
/* * Copyright 2007 Stephen Liu * For license terms, see the file COPYING along with this library. */#ifndef __sptunnelimpl_hpp__#define __sptunnelimpl_hpp__#include <pthread.h>#include "spmsgdecoder.hpp"#include "sphandler.hpp"#include "spresponse.hpp"class SP_TunnelArg {public:	static SP_TunnelArg * create();	enum { eCreate, eNormal, eDestroy };	void setTunnelStatus( int status );	int getTunnelStatus();	void setTunnelSid( SP_Sid_t sid );	SP_Sid_t getTunnelSid();	void setBackendStatus( int status );	int getBackendStatus();	void setBackendSid( SP_Sid_t sid );	SP_Sid_t getBackendSid();	void addRef();	void release();private:	pthread_mutex_t mMutex;	unsigned char mRefCount;	unsigned char mTunnelStatus, mBackendStatus;	SP_Sid_t mTunnelSid, mBackendSid;	SP_TunnelArg();	~SP_TunnelArg();};class SP_TunnelDecoder : public SP_MsgDecoder {public:	SP_TunnelDecoder();	virtual ~SP_TunnelDecoder();	virtual int decode( SP_Buffer * inBuffer );	SP_Buffer * getBuffer();	SP_Buffer * takeBuffer();private:	SP_Buffer * mBuffer;};class SP_BackendHandler : public SP_Handler {public:	SP_BackendHandler( SP_TunnelArg * tunnelArg );	virtual ~SP_BackendHandler();	// return -1 : terminate session, 0 : continue	virtual int start( SP_Request * request, SP_Response * response );	// return -1 : terminate session, 0 : continue	virtual int handle( SP_Request * request, SP_Response * response );	virtual void error( SP_Response * response );	virtual void timeout( SP_Response * response );	virtual void close();private:	SP_TunnelArg * mArg;};class SP_Dispatcher;class SP_MsgBlockList;class SP_TunnelHandler : public SP_Handler {public:	SP_TunnelHandler( SP_Dispatcher * dispatcher,			const char * dstHost, int dstPort );	virtual ~SP_TunnelHandler();	// return -1 : terminate session, 0 : continue	virtual int start( SP_Request * request, SP_Response * response );	// return -1 : terminate session, 0 : continue	virtual int handle( SP_Request * request, SP_Response * response );	virtual void error( SP_Response * response );	virtual void timeout( SP_Response * response );	virtual void close();private:	SP_Dispatcher * mDispatcher;	SP_TunnelArg * mArg;	SP_MsgBlockList * mMsgBlockList;	char mHost[ 32 ];	int mPort;};#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?