Beispiel #1
0
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 + "'");
	}
}
Beispiel #2
0
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;
}
Beispiel #3
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;
}