int createServer(const StaticString &address, unsigned int backlogSize, bool autoDelete) { TRACE_POINT(); switch (getSocketAddressType(address)) { case SAT_UNIX: return createUnixServer(parseUnixSocketAddress(address), backlogSize, autoDelete); case SAT_TCP: { string host; unsigned short port; parseTcpSocketAddress(address, host, port); return createTcpServer(host.c_str(), port, backlogSize); } default: throw ArgumentException(string("Unknown address type for '") + address + "'"); } }
int main(int argc, char **argv) { if(argc < 2) { printf("usage : %s <port>\n", argv[0]); exit(1); } int port = atoi(argv[1]); epoller *ep = epollCreate(); echoServerContext *server = createTcpServer(ep, port); if(epollAddEvent(ep, server->serverfd, EPOLLIN, acceptTcpHandler, NULL) != 0) oom("creating file event"); epollDispatch(ep); epollDelete(ep); printf("Bye!\n"); return 0; }
LWRESULT Cx_TSFrontend::Init() { GET_OBJECT_RET(PerfMgr_Cps, iPerfMgr_Cps_Io, LWDP_GET_OBJECT_ERROR); gIoPerSecond = iPerfMgr_Cps_Io; GET_OBJECT_RET(PerfMgr_Cps, iPerfMgr_Cps_Create, LWDP_GET_OBJECT_ERROR); gThreadPerCreate = iPerfMgr_Cps_Create; GET_OBJECT_RET(PerfMgr_Cps, iPerfMgr_Cps_Destory, LWDP_GET_OBJECT_ERROR); gThreadPerRelease = iPerfMgr_Cps_Destory; GET_OBJECT_RET(PerfMgr_Cps, iPerfMgr_Cps_MBPS, LWDP_GET_OBJECT_ERROR); gThreadMbps = iPerfMgr_Cps_MBPS; GET_OBJECT_RET(ConfigMgr, iConfigMgr, LWDP_GET_OBJECT_ERROR); XPropertys propMax; iConfigMgr->GetModulePropEntry(LW_TSFRONTEND_MODULE_NAME, LW_TSFRONTEND_BUF_MAX_LEN_NAME, propMax); if(!propMax[0].propertyText.empty()) { gRecvBufMaxLen = atol(propMax[0].propertyText.c_str()); } else { LWDP_LOG_PRINT("TSFRONTEND", LWDP_LOG_MGR::WARNING, "Can't Find <RecvBufMaxLen> In Config File, Default(%d)", gRecvBufMaxLen); } //Connect XPropertys propConnet; iConfigMgr->GetModulePropEntry(LW_TSFRONTEND_MODULE_NAME, LW_TSFRONTEND_CONNECT_TARGET_NAME, propConnet); if(!propConnet[0].propertyText.empty()) { gConnStr = propConnet[0].propertyText; } else { LWDP_LOG_PRINT("TSFRONTEND", LWDP_LOG_MGR::WARNING, "Can't Find <ConnetTarget> In Config File, Default(%s)", gConnStr.c_str()); } //Set Send Timeout XPropertys propSend; iConfigMgr->GetModulePropEntry(LW_TSFRONTEND_MODULE_NAME, LW_TSFRONTEND_SEND_TIMEOUT_NAME, propSend); if(!propSend[0].propertyText.empty()) { gSendTimeout = atol(propSend[0].propertyText.c_str()); } else { LWDP_LOG_PRINT("TSFRONTEND", LWDP_LOG_MGR::WARNING, "Can't Find <SendTimeout> In Config File, Default(%d)", gSendTimeout); } //Set Recv Timeout XPropertys propRecv; iConfigMgr->GetModulePropEntry(LW_TSFRONTEND_MODULE_NAME, LW_TSFRONTEND_RECV_TIMEOUT_NAME, propRecv); if(!propRecv[0].propertyText.empty()) { gRecvTimeout = atol(propRecv[0].propertyText.c_str()); } else { LWDP_LOG_PRINT("TSFRONTEND", LWDP_LOG_MGR::WARNING, "Can't Find <RecvTimeout> In Config File, Default(%d)", gRecvTimeout); } XPropertys propPort; iConfigMgr->GetModulePropEntry(LW_TSFRONTEND_MODULE_NAME, LW_TSFRONTEND_MODULE_PORT_NAME, propPort); uint32_ portNum = LW_TSFRONTEND_SERVER_PORT; if(!propPort[0].propertyText.empty()) { portNum = atol(propPort[0].propertyText.c_str()); } else { LWDP_LOG_PRINT("TSFRONTEND", LWDP_LOG_MGR::WARNING, "Can't Find <ServerPort> In Config File, Default(%d)", portNum); } RINOK(createTcpServer(portNum)); GET_OBJECT_RET(EventMgr, iEventMgr, 0); RINOK(iEventMgr->InitLoop(0)); mIoWatcher = iEventMgr->CreateWatcher(LWEV::WATCHER_IO, (WATCHER_CALLBACK)io_callback, mServerSocket, LW_READ); if(!mIoWatcher) { LWDP_LOG_PRINT("TSFRONTEND", LWDP_LOG_MGR::ERR, "iEventMgr->CreateWatcher Create IO Watcher Error"); return TSFRONTEND::LWDP_CREATE_IO_WATCHER_ERR; } GET_OBJECT_RET(ZmqMgr, iZmqMgr, -1); gContextHandle = iZmqMgr->GetNewContext(); //Start Watcher iEventMgr->WatcherStart(mIoWatcher); Cx_Interface<Ix_ConsoleMgr> iConsoleMgr(CLSID_ConsoleMgr); if(!iConsoleMgr.IsNull()) { ConsoleCBDelegate regFun = MakeDelegate(this, &Cx_TSFrontend::ConsoleGetTsInfo); RINOK(iConsoleMgr->RegisteCommand(LW_TSFRONTEND_COMMAND_GET_INFO_NAME, regFun, LW_TSFRONTEND_COMMAND_GET_INFO_INFO)); } return LWDP_OK; }