Chinaunix首页 | 论坛 | 博客
  • 博客访问: 848112
  • 博文数量: 756
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 4980
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:40
文章分类

全部博文(756)

文章存档

2011年(1)

2008年(755)

我的朋友

分类:

2008-10-13 16:12:07


没啥好说的,管理所有的客户端和内存池的功能。

class ClientManager : public SingleTon
{
public:

 ClientManager():_header(NULL){}
 
 ~ClientManager(){}

public:

 void init(unsigned int default_pool_size,unsigned int default_read_buf_size);

 void fini();

public:

 ClientHandler *get_clienthandler();

 void release_client_handle(ClientHandler *client);

 void check_time_out();

 size_t get_client_count();

private:

 ClientHandler *_header;

 std::set _active_clients;

 ACE_Recursive_Thread_Mutex _lock;
};


 

#include "clientmanager.h"
#include

ClientHandler *ClientManager::get_clienthandler()
{
 FUNC_ENTER;
 ACE_Guard locker(_lock);
 ClientHandler *ret=NULL;
 if(_header==NULL)
 {
  ACE_DEBUG((LM_DEBUG,"client > max clients!!!\n"));
 }
 else
 {
  ret=_header;
  _header=_header->next();
  ret->init();
  _active_clients.insert(ret);
 }
 FUNC_LEAVE;
 return ret;
}

void ClientManager::release_client_handle(ClientHandler *client)
{
 //FUNC_ENTER;
 ACE_Guard locker(_lock);
 client->fini();
 client->next(_header);
 _header=client;
 _active_clients.erase(client);
 //FUNC_LEAVE;
}

void ClientManager::init(unsigned int default_pool_size,unsigned int default_read_buf_size)
{
 //FUNC_ENTER;
 for(unsigned int i=0;i {
  ClientHandler *client=new ClientHandler(default_read_buf_size);
  client->next(_header);
  _header=client;
 }
 //FUNC_LEAVE;
}

void ClientManager::fini()
{
 //FUNC_ENTER;
 while(_header)
 {
  ClientHandler *temp=_header->next();
  delete _header;
  _header=temp;
 }
 //FUNC_LEAVE;
}

void ClientManager::check_time_out()
{
 time_t cur_time=ACE_OS::time(NULL);
 ACE_Guard locker(_lock);
 for(std::set::iterator it=_active_clients.begin();it!=_active_clients.end();it++)
 {
  (*it)->check_time_out(cur_time);
 }
}

size_t ClientManager::get_client_count()
{
 ACE_Guard locker(_lock);
 return _active_clients.size();
}


--------------------next---------------------

阅读(496) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~