#include "stdafx.h"
#include "rpc_manager.h"

rpc_manager::rpc_manager(int max_threads /* = 10 */)
{
	// 因为本类实例是单例，会在程序 main 之前被调用，
	// 所以需要在此类中打开日志
	logger_open("gui_rpc.log", "gui_rpc");
	// 创建非阻塞框架句柄，并采用 WIN32 消息模式：acl::ENGINE_WINMSG
	handle_ = new acl::aio_handle(acl::ENGINE_WINMSG);
	// 创建 rpc 服务对象
	service_ = new acl::rpc_service(max_threads);
	// 打开消息服务
	if (service_->open(handle_) == false)
		logger_fatal("open service error: %s", acl::last_serror());
}

rpc_manager::~rpc_manager()
{
	delete service_;
	handle_->check();
	delete handle_;
	logger("rpc service destroy ok!");
}

void rpc_manager::fork(acl::rpc_request* req)
{
	service_->rpc_fork(req);
}
