void default_resource_send(const HttpsServer &server, shared_ptr<HttpsServer::Response> response, shared_ptr<ifstream> ifs, shared_ptr<vector<char> > buffer) { streamsize read_length; if((read_length=ifs->read(&(*buffer)[0], buffer->size()).gcount())>0) { response->write(&(*buffer)[0], read_length); if(read_length==static_cast<streamsize>(buffer->size())) { server.send(response, [&server, response, ifs, buffer](const boost::system::error_code &ec) { if(!ec) default_resource_send(server, response, ifs, buffer); else cerr << "Connection interrupted" << endl; }); } } }
void default_resource_send(const HttpsServer &server, const shared_ptr<HttpsServer::Response> &response, const shared_ptr<ifstream> &ifs) { //read and send 128 KB at a time static vector<char> buffer(131072); // Safe when server is running on one thread streamsize read_length; if((read_length=ifs->read(&buffer[0], buffer.size()).gcount())>0) { response->write(&buffer[0], read_length); if(read_length==static_cast<streamsize>(buffer.size())) { server.send(response, [&server, response, ifs](const SimpleWeb::error_code &ec) { if(!ec) default_resource_send(server, response, ifs); else cerr << "Connection interrupted" << endl; }); } } }