SatelliteServerPtr SatelliteServer::Create(SatelliteServerInfoPtr info) { SatelliteServerPtr satellite; if (info->getPort()) { switch (info->getType()) { case KindOfInternalPageServer: satellite = SatelliteServerPtr(new InternalPageServer(info)); break; case KindOfDanglingPageServer: satellite = SatelliteServerPtr(new DanglingPageServer(info)); break; case KindOfRPCServer: satellite = SatelliteServerPtr(new RPCServer(info)); break; case KindOfXboxServer: satellite = SatelliteServerPtr(new RPCServer(info)); break; default: ASSERT(false); } if (satellite) { satellite->setName(info->getName()); } } return satellite; }
InternalPageServer(SatelliteServerInfoPtr info) { InternalPageServerImplPtr server (new TypedServer<InternalPageServerImpl, HttpRequestHandler> (RuntimeOption::ServerIP, info->getPort(), info->getThreadCount(), info->getTimeoutSeconds())); server->create(info->getURLs()); m_server = server; }
RPCServerImpl(const std::string &address, SatelliteServerInfoPtr info) : LibEventServer(address, info->getPort(), info->getThreadCount(), info->getTimeoutSeconds()), m_serverInfo(info) { }
DanglingPageServer(SatelliteServerInfoPtr info) { m_server = ServerPtr (new TypedServer<LibEventServer, HttpRequestHandler> (RuntimeOption::ServerIP, info->getPort(), info->getThreadCount(), info->getTimeoutSeconds())); }