Esempio n. 1
0
int main(int argc, char** argv)
{
  int port_no = 8002;

  if (argc > 2) {
    GERROR("Invalid number of arguments\n");
    GERROR("Usage: %s <port no>\n", argv[0]);
  }

  if (argc > 1) {
    port_no = std::atoi(argv[1]);
  }

  ACE_INET_Addr port_to_listen (port_no);

  Gadgetron::CloudBusRelayAcceptor acceptor;

  acceptor.reactor (ACE_Reactor::instance ());
  if (acceptor.open (port_to_listen) == -1)
    return 1;

  ACE_Reactor::instance()->run_reactor_event_loop ();

  return 0;
}
Esempio n. 2
0
// Listing 2 code/ch07
int ACE_TMAIN (int, ACE_TCHAR *[])
{
  ACE_INET_Addr port_to_listen ("HAStatus");
  ClientAcceptor acceptor;
  if (acceptor.open (port_to_listen) == -1)
    return 1;

  ACE_Reactor::instance ()->run_reactor_event_loop ();

  return (0);
}
Esempio n. 3
0
bool TcpServerMgr::start()
{
	// 1.启动侦听
	ACE_INET_Addr port_to_listen(m_port);
	if (m_connector.open(port_to_listen) == -1)
	{
		return false;
	}
	else
	{
		LOG->message("server started on port:%d",port_to_listen.get_port_number());

		// 启动客户端消息循环
		App_CMService::instance()->start();

		return true;
	}

}
Esempio n. 4
0
BOOL CAceTCPServer::init(int port,int RecvMaxLength,int ifUseJson){
	ACE_INET_Addr port_to_listen(port); //绑定的端口
	
	if(pacceptor->open(port_to_listen,1) == -1){ //绑定端口
		AfxMessageBox("打开端口失败");
		return 0;
	}
	this->ifUseJson = ifUseJson;

	//开一个线程用于阻塞接收
	//添加一个锁,用户处理的虚函数必须要上锁,当多个客户端连接的时候,必须先处理完一个客户端的数据才能处理第二个
	Threadpackage* pThreadRecvPac = new Threadpackage;
	pThreadRecvPac->pmutex = &mutex;
	pThreadRecvPac->RecvMaxLength = RecvMaxLength;
	pThreadRecvPac->pThis = this;
	pThreadRecvPac->pacceptor = pacceptor;
	pThreadRecvPac->pvecIPPeer = &vecIPPeer;
	pThreadRecvPac->ifUseJson = ifUseJson;
	//开线程
	DWORD ThreadID = 0;
	Create_Thread(ThreadRecv,pThreadRecvPac,ThreadID);

	return 1;
}
int ManageClientValidation::svc(void)
{
	FUNCTIONTRACE(ManageClientValidation::svc);
	REPORT_THREAD_INFO("ManageClientValidation::svc", ACE_OS::thr_self());

	ACE_Reactor * reactor = NULL;
	while (!m_stop)
	{

#ifdef WIN32
		reactor = new ACE_Reactor(new ACE_Select_Reactor(), true);
#else
		reactor = new ACE_Reactor(new ACE_Dev_Poll_Reactor(), true);
#endif

		LoginAcceptor login_acceptor;
		ACE_INET_Addr port_to_listen(sMsgCfg->getLSCfg().listen_port, sMsgCfg->getLSCfg().host.c_str());
		if (login_acceptor.open(port_to_listen, reactor) == -1)
		{
			GATE_LOG_ERROR(ACE_TEXT("Failed to call login_acceptor.open, host is <%s>, the port is <%d>, last error is <%d>\n"), sMsgCfg->getClientCfg().host.c_str(), sMsgCfg->getClientCfg().listen_port, ACE_OS::last_error());
			return 1;
		}

		ReportTrafficToLoginServer report_traffic;

		m_timer_id = reactor->schedule_timer(this, NULL, ACE_Time_Value(3, 0), ACE_Time_Value(3, 0));
		if (m_timer_id == -1)
		{
			GATE_LOG_ERROR(ACE_TEXT("Failed to schedule timer in ManageClientValidation::svc, last error is <%d>\n"), ACE_OS::last_error());
			return 1;
		}

		//m_report_traffic_timer_id = reactor->schedule_timer(&report_traffic, NULL, ACE_Time_Value(sMsgCfg->getLSCfg().report_interval), ACE_Time_Value(sMsgCfg->getLSCfg().report_interval));
		//if (m_report_traffic_timer_id == -1)
		//{
		//	GATELogp(LM_ERROR, ACE_TEXT("Failed to schedule timer in ManageClientValidation::svc for report traffic, last error is <%d>\n"), ACE_OS::last_error());
		//	return 1;
		//}

		//reactor->run_reactor_event_loop();
		while (true)
		{
			reactor->run_reactor_event_loop();
#ifdef WIN32
			break;
#else
			if (ACE_OS::last_error() == EINTR)
			{
				continue;
			}
			else
			{
				break;
			}
#endif
		}


		GATE_LOG_INFO(ACE_TEXT("Exit thread ManageClientValidation::svc, last error is <%d>\n"), ACE_OS::last_error());
	}

	delete reactor;

	m_wait = false;

	return 0;
}