分类:
2008-10-13 16:12:06
太简单了,不说了。
#include
#include
#include "clienthandler.h"
//用来网络连接
class ClientAcceptor : public ACE_Asynch_Acceptor
{
public:
/**
*
* \return
*/
ClientAcceptor(){}
/**
*
* \return
*/
~ClientAcceptor(){}
public:
//在这里增加验证代码
/**
*
* \param result
* \param &remote
* \param &local
* \return
*/
virtual int validate_connection(
const ACE_Asynch_Accept::Result& result,
const ACE_INET_Addr &remote,
const ACE_INET_Addr &local);
virtual ClientHandler *make_handler (void);
};
int ClientAcceptor::validate_connection(
const ACE_Asynch_Accept::Result& result,
const ACE_INET_Addr &remote,
const ACE_INET_Addr &local)
{
FUNC_ENTER;
return 0;
}
//BUG FIXED!!!
//这个地方取得了CLIENTMANAGER的CLIENTHANDLE的时候,实际上并未初始化成功,
//而这时候线程被中断掉了。
ClientHandler *ClientAcceptor::make_handler (void)
{
FUNC_ENTER;
//从内存池取得实例,假如返回NULL的话,ACE系统会自动把这个给关掉。
return ClientManager::get_instance().get_clienthandler();
}