void my::GateServer::init() { boost::shared_ptr<TcpServer> serverPtr(this); //make sure that shared_from_this() can run perfectly ok! Json::Value gateConf = util::fileSystem::loadJsonFileEval(jsonconf::server_config); if (gateConf == Json::nullValue) { LogW << "Error init GateServer, null gateConf" << LogEnd; return; } //初始化httpSvr { m_HttpServerPtr = HttpServerPtr(new http::HttpServer()); m_HttpServerPtr->init(gateConf); m_HttpServerPtr->run(); } m_GateConf = gateConf; int port = gateConf["gateSvrPort"].asInt(); std::string gameSvrIp = gateConf["gameSvrIp"].asString(); int gameSvrPort = gateConf["gameSvrPort"].asInt(); std::string accountSvrIp = gateConf["accountSvrIp"].asString(); int accountSvrPort = gateConf["accountSvrPort"].asInt(); m_nConnCount = 0; m_nNetIdHolder = 0; m_pEndpoint = EndpointPtr(new boost::asio::ip::tcp::endpoint(ip::tcp::v4(), port)); m_pAcceptor = AcceptorPtr(new boost::asio::ip::tcp::acceptor(core.getService(), *m_pEndpoint)); m_GateHandler = boost::shared_ptr<GateHandler>(new GateHandler()); ConnectionPtr nextConn = boost::shared_ptr<TcpConnection>(new TcpConnection(core.getService(), m_GateHandler, shared_from_this())); m_pAcceptor->async_accept(nextConn->getSocket(), boost::bind(&GateServer::handle_accept, this, nextConn, boost::asio::placeholders::error)); connectToGameSvr(gameSvrIp, gameSvrPort); connectToAccountSvr(accountSvrIp, accountSvrPort); LogD << "Init Gate Server Ok!!!" << LogEnd; update(); }
EndpointPtr MulticastClientTransport::getEndpointPtr() const { RCF_ASSERT(0); return EndpointPtr(); }
EndpointPtr UdpEndpoint::clone() const { return EndpointPtr(new UdpEndpoint(*this)); }
EndpointPtr Win32NamedPipeEndpoint::clone() const { return EndpointPtr( new Win32NamedPipeEndpoint(*this) ); }
EndpointPtr TcpEndpoint::clone() const { return EndpointPtr(new TcpEndpoint(*this)); }
EndpointPtr UnixLocalEndpoint::clone() const { return EndpointPtr( new UnixLocalEndpoint(*this) ); }
EndpointPtr InProcessTransport::getEndpointPtr() const { RCF_ASSERT(0); return EndpointPtr(); }
EndpointPtr UnixLocalClientTransport::getEndpointPtr() const { return EndpointPtr( new UnixLocalEndpoint(mFileName) ); }
EndpointPtr HttpEndpoint::clone() const { return EndpointPtr( new HttpEndpoint(*this) ); }