Beispiel #1
0
	void subsystem::initialize(Poco::Util::Application& app)
	{
		webcpp::conf serverConf(app.config());
		Poco::Net::HTTPServerParams* pars = new Poco::Net::HTTPServerParams;
		pars->setMaxQueued(serverConf.getInt("maxQueued", 1024));
		pars->setMaxThreads(serverConf.getInt("maxThreads", 2048));
		pars->setSoftwareVersion(serverConf.getString("softwareVersion", "webcppd/1.0.0"));
		pars->setKeepAlive(serverConf.getBool("keepAlive", true));
		pars->setMaxKeepAliveRequests(serverConf.getInt("maxKeepAliveRequests", 0));
		pars->setKeepAliveTimeout(Poco::Timespan(serverConf.getInt("keepAliveTimeout", 60), 0));
		pars->setTimeout(Poco::Timespan(serverConf.getInt("timeout", 60), 0));

		Poco::ThreadPool &pool = Poco::ThreadPool::defaultPool();
		pool.addCapacity(serverConf.getInt("maxThreads", 2048));

		Poco::Net::ServerSocket serverSocket;
		Poco::Net::IPAddress ipAddr(serverConf.getString("ip", "127.0.0.1"));
		Poco::Net::SocketAddress socketAddr(ipAddr, serverConf.getUInt("port", 8888));
		serverSocket.bind(socketAddr, false);
		serverSocket.listen(serverConf.getInt("maxQueued", 1024));
		serverSocket.acceptConnection();
		this->server = new Poco::Net::HTTPServer(new webcpp::factory(), pool, serverSocket, pars);
		this->server->start();
	}
Beispiel #2
0
	/*! Accept an inbound connection and obtain a connected socket
	  \param claddr location to store address of remote connection
	  \return the connected socket */
	Poco::Net::StreamSocket accept(Poco::Net::SocketAddress& claddr)
		{ return _server_sock->acceptConnection(claddr); }
Beispiel #3
0
	/*! Check to see if there are any waiting inbound connections.
	  \param span timespan (us, default 250 ms) to wait before returning (will return immediately if connection available)
	  \return true if a connection is avaialble */
	bool poll(const Poco::Timespan& span=Poco::Timespan(250000)) const
		{ return _server_sock->poll(span, Poco::Net::Socket::SELECT_READ); }