Exemplo n.º 1
0
void TcpMasterServer::postInitServer()
{
	for(UInt32 i = 0; i < WORKERS; ++ i)
	{
		TcpSlaveServer * s = newWorker(i);
		_workers.push_back(std::shared_ptr<TcpSlaveServer>(s));
	}
	for(int i = 0; i < WORKERS; ++ i)
	{
		_workerThreads[i].start(*_workers[i]);
	}

	_ev_server = event_new(_ev_base, _socket, EV_READ | EV_WRITE | EV_PERSIST, _ev_server_event, this);

	if(_ev_server == NULL)
	{
		close(_socket);
		destroy();
		throw std::bad_alloc();
	}

	event_add(_ev_server, NULL);

	_ev_timer = event_new(_ev_base, -1, EV_PERSIST, _ev_timer_event, this);
	if(_ev_timer != NULL)
	{
		struct timeval tv = {5, 0};
		event_add(_ev_timer, &tv);
	}
}
Exemplo n.º 2
0
Worker* multask_createWorker(){
	Worker* worker=newWorker();
	if(worker!=NULL){
		initWorker(worker);
	}
	return worker;
}
Exemplo n.º 3
0
void sfera_webserver::master_listener::_workerProcess(worker_handler newWorkerHandler)
{
    ::close(newWorkerHandler.communicationChannel[1]);

    _ioservice.notify_fork(b_asio::io_service::fork_child);

    worker newWorker(newWorkerHandler.communicationChannel[0]);
    auto server = new http_server(std::move(_serverConfig), &_ioservice);
    newWorker.run(server);

    delete server;
    ::close(newWorkerHandler.communicationChannel[0]);
    return;
}