Exemple #1
0
 void servant(connection_type c) {
     if (read_timeout_>std::chrono::seconds(0) || write_timeout_>std::chrono::seconds(0)) {
         c.start_watchdog();
     }
     request req;
     int count=0;
     while(c.recv(req)) {
         response resp;
         // Set default attributes for response
         resp.status_code=http_status_code::OK;
         resp.version=req.version;
         resp.keep_alive=req.keep_alive;
         if(count>=max_keep_alive_) resp.keep_alive=false;
         if(!default_request_handler_(req, resp, c.stream())) {
             break;
         }
         c.send(resp);
         // Make sure we consumed all parts of the request
         req.drop_body();
         // Make sure all data are received and sent
         c.stream().flush();
         // Keepalive counter
         count++;
     }
     c.close();
     
     active_connection_--;
     connection_close_.notify_one();
 }
Exemple #2
0
 boost::system::error_code accept(connection_type &sc) {
     boost::system::error_code ec;
     acceptor_(sc.stream(), ec);
     if (!ec) {
         active_connection_++;
     }
     return ec;
 }