www.pudn.com > fanccMSNr.src.rar > MessageDispatcher.h


#pragma once 
#include  
#include  
 
#include "messenger/MessageDispatcher.hpp" 
#include "messenger/MessageListener.hpp" 
 
using namespace poral; 
 
/** 
* MessageDispatcherÀÎÅÍÆäÀ̽º¸¦ CAsyncSocketÀ» ÅëÇØ ±¸ÇöÇÑ ¸Þ½ÃÁö 
* Àü¼Û Ŭ·¡½º. 
*/ 
class CMessageDispatcher : public CAsyncSocket,  
							public MessageDispatcher // interface 
{ 
public: 
	CMessageDispatcher(); 
	virtual ~CMessageDispatcher(); 
 
	// MessageDispatcher ÀÎÅÍÆäÀ̽º 
	virtual void connect(const string &address, unsigned long port); 
	virtual void close() { 
		Close(); 
	} 
	virtual int listen(int preferredPort); 
	virtual void getAddress(string &address); 
 
	virtual void sendMessage(Message &message); 
	virtual bool sendBytes(const unsigned char *bytes, size_t length); 
	virtual void addMessageListener(MessageListener &messageListener); 
	virtual void removeMessageListener(MessageListener &messageListener); 
	virtual MessageDispatcher *newInstance(); 
 
	virtual void OnConnect(int nErrorCode); 
protected: 
	/** ¸Þ½ÃÁö°¡ Å뺸µÉ ¸®½º³Ê */ 
	list listeners; 
	/** OnReceive¿¡¼­ ¸Þ½ÃÁö¸¦ Á¶¸³ÇÏ´Â µ¥ ¾µ buffer */ 
	string buffer; 
	/** ¼­¹ö·Î ¼ÒÄÏÀ» ¿­ ¶§ ¸®½º´×ÇÒ ¼ÒÄÏ */ 
	CAsyncSocket *serverSocket; 
public: 
	virtual void OnClose(int nErrorCode); 
	/** 
	* ¼ÒÄÏÀ¸·ÎºÎÅÍ ¹ÙÀÌÆ®°¡ µµÂøÇßÀ» ¶§ È£ÃâµÈ´Ù. 
	* ¹Þ¾Æ³½ ¹ÙÀÌÆ®¸¦ ¸ð¾Æ¼­ ¸Þ½ÃÁö¸¦ ±¸¼ºÇϰí MessageListener¸¦ È£ÃâÇÑ´Ù. 
	*/ 
	virtual void OnReceive(int nErrorCode); 
	virtual void OnSend(int nErrorCode); 
};