#ifndef _CHAT_GAME_SERVER_DISPATCH_H_ #define _CHAT_GAME_SERVER_DISPATCH_H_ #include #include #include #include // Àü¹æ ÂüÁ¶ struct PktSL; // ¼­¹ö ·Î±×ÀÎ struct PktChatData; // ij¸¯ÅÍ Á¤º¸ º¯°æµÊ struct PktFriendDB; // Ä£±¸ Á¤º¸ º¯°æ½Ã struct PktChatRequest; // äÆÃ ÆÐŶ struct PktChatBan; // äÆÃ ±ÝÁö struct PktChatBanInfo; // äÆÃ ±ÝÁö Á¤º¸ ¾ò¾î¿À±â. // forward decl. class CServerChatPacket; class CChatGameServerDispatch : public CRylServerDispatch { protected: enum { MAX_PACKET_DISPATCH_PER_PULSE = 30, MAX_STREAM_BUFFER_SIZE = 16000 }; public: static CMultiDispatch& GetDispatchTable(); CChatGameServerDispatch(CSession& Session); virtual void Connected(); virtual void Disconnected(); unsigned long GetServerID() const { return m_dwServerID; } private: virtual bool DispatchPacket(PktBase* lpPktBase); bool ProcessServerLogin(PktSL* lpPktSL); // ¼­¹ö ·Î±×ÀÎ bool ProcessCharInfoChange(PktChatData* lpChatInfoChange); // ij¸¯ÅÍ Á¤º¸ º¯°æµÊ bool ProcessUpdateFriendDB(PktFriendDB* lpFriendDB); // Ä£±¸ Á¤º¸ ÁÖ±â bool ProcessChat(PktChatRequest* lpPktChatReq); // äÆÃ bool ProcessChatBan(PktChatBan* lpPktChatBan); // äÆÃ ±ÝÁö bool ProcessChatBanInfo(PktChatBanInfo* lpPktChatBanInfo); // äÆÃ ±ÝÁö Á¤º¸. unsigned long m_dwServerID; }; class CSendChatAllGameServer { public: CSendChatAllGameServer(CServerChatPacket& serverChatPacket); bool operator () (unsigned long dwServerID, CPacketDispatch& dispatch); private: CServerChatPacket& m_ServerChatPacket; }; #endif