/** @file NetTaskEx.h @brief
*	Copyright (c) 2007,第九城市游戏研发中心
*	All rights reserved.
*
*	当前版本:
*	作    者:zhangsongwei
*	完成日期:2008-6-16
*
*	取代版本:
*	作    者:
*	完成日期:
*/ #ifndef NET_TASK_EX_H #define NET_TASK_EX_H #include "Acceptor.h" #include "Connector.h" #include "SessionManager.h" #include "BufQueue/BufQueue.h" #include "BufQueue/BufQueueImp.h" #include "HandlerEx.h" #include /// 前置声明 template class CNetTaskEx; template class CTask : public ACE_Task_Base { friend class CNetTaskEx; private: CTask(IBufQueue *pReadQueue, IBufQueue *pSendQueue, ACE_Reactor *pReactor, CHandlerManagerEx *pHandlerManager); virtual ~CTask(void); public: int open(void *args /* = 0 */); int svc(void); int Quit(void); private: /// 读取队列 IBufQueue *m_pReadQueue; /// 发送队列 IBufQueue *m_pSendQueue; /// 反应器 ACE_Reactor *m_pReactor; /// CHandlerManagerEx *m_pHandlerManager; /// CAcceptorEx< SVC_HANDLER, ACE_SOCK_Acceptor, ACE_LOCK > *m_pAcceptor; }; template class CTaskHelper : public ACE_Task_Base { friend class CNetTaskEx; private: CTaskHelper(IBufQueue *pReadQueue, IBufQueue *pSendQueue, ACE_Reactor *pReactor, CHandlerManagerEx *pHandlerManager); virtual ~CTaskHelper(void); public: virtual int open(void *args /* = 0 */); virtual int svc(void); void Quit(void); private: IBufQueue *m_pReadQueue; IBufQueue *m_pSendQueue; ACE_Reactor *m_pReactor; CHandlerManagerEx *m_pHandlerManager; CConnectorEx< SVC_HANDLER, ACE_SOCK_Connector, ACE_LOCK > *m_pConnector; std::list * m_pToSwitchQueueRead; bool m_bQuit; }; template class CNetTaskEx { public: CNetTaskEx(IBufQueue *pReadQueue, IBufQueue *pSendQueue); ~CNetTaskEx(void); public: int Open(void *args /* = 0 */); void Quit(void); int Wait(void); private: /// 读取队列 IBufQueue *m_pReadQueue; /// 发送队列 IBufQueue *m_pSendQueue; /// 反应器 ACE_Reactor *m_pReactor; /// static CHandlerManagerEx m_handlerManager; /// CTask *m_pTask; /// CTaskHelper *m_pTaskHelper; }; #if defined(ACE_TEMPLATES_REQUIRE_SOURCE) #include "NetTaskEx.cpp" #endif #if defined(ACE_TEMPLATES_REQUIRE_PRAGMA) #pragma implementation("NetTaskEx.cpp") #endif #endif/*NET_TASK_EX_H*/