Server::send response parameter changed to const. Some cleanup of examples related to this.
This commit is contained in:
parent
c934c9aefe
commit
a69e32290f
3 changed files with 18 additions and 14 deletions
|
|
@ -23,7 +23,8 @@ typedef SimpleWeb::Server<SimpleWeb::HTTP> HttpServer;
|
||||||
typedef SimpleWeb::Client<SimpleWeb::HTTP> HttpClient;
|
typedef SimpleWeb::Client<SimpleWeb::HTTP> HttpClient;
|
||||||
|
|
||||||
//Added for the default_resource example
|
//Added for the default_resource example
|
||||||
void default_resource_send(const HttpServer &server, shared_ptr<HttpServer::Response> &response, shared_ptr<ifstream> &ifs);
|
void default_resource_send(const shared_ptr<HttpServer> &server,
|
||||||
|
const shared_ptr<HttpServer::Response> &response, const shared_ptr<ifstream> &ifs);
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
//HTTP-server at port 8080 using 1 thread
|
//HTTP-server at port 8080 using 1 thread
|
||||||
|
|
@ -183,7 +184,7 @@ int main() {
|
||||||
|
|
||||||
header.emplace("Content-Length", to_string(length));
|
header.emplace("Content-Length", to_string(length));
|
||||||
response->write(header);
|
response->write(header);
|
||||||
default_resource_send(*server, response, ifs);
|
default_resource_send(server, response, ifs);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
throw invalid_argument("could not read file");
|
throw invalid_argument("could not read file");
|
||||||
|
|
@ -193,7 +194,7 @@ int main() {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
server->on_error = [](std::shared_ptr<HttpServer::Request> & /*request*/, const SimpleWeb::error_code & /*ec*/) {
|
server->on_error = [](shared_ptr<HttpServer::Request> & /*request*/, const SimpleWeb::error_code & /*ec*/) {
|
||||||
// handle errors here
|
// handle errors here
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -217,7 +218,7 @@ int main() {
|
||||||
cout << r2->content.rdbuf() << endl;
|
cout << r2->content.rdbuf() << endl;
|
||||||
|
|
||||||
// asynchronous request example
|
// asynchronous request example
|
||||||
client->request("POST", "/json", json_string, [](std::shared_ptr<HttpClient::Response> &response, const SimpleWeb::error_code &ec) {
|
client->request("POST", "/json", json_string, [](shared_ptr<HttpClient::Response> &response, const SimpleWeb::error_code &ec) {
|
||||||
if(!ec)
|
if(!ec)
|
||||||
cout << response->content.rdbuf() << endl;
|
cout << response->content.rdbuf() << endl;
|
||||||
});
|
});
|
||||||
|
|
@ -227,14 +228,15 @@ int main() {
|
||||||
server_thread.join();
|
server_thread.join();
|
||||||
}
|
}
|
||||||
|
|
||||||
void default_resource_send(const HttpServer &server, shared_ptr<HttpServer::Response> &response, shared_ptr<ifstream> &ifs) {
|
void default_resource_send(const shared_ptr<HttpServer> &server,
|
||||||
|
const shared_ptr<HttpServer::Response> &response, const shared_ptr<ifstream> &ifs) {
|
||||||
//read and send 128 KB at a time
|
//read and send 128 KB at a time
|
||||||
static vector<char> buffer(131072); // Safe when server is running on one thread
|
static vector<char> buffer(131072); // Safe when server is running on one thread
|
||||||
streamsize read_length;
|
streamsize read_length;
|
||||||
if((read_length = ifs->read(&buffer[0], buffer.size()).gcount()) > 0) {
|
if((read_length = ifs->read(&buffer[0], buffer.size()).gcount()) > 0) {
|
||||||
response->write(&buffer[0], read_length);
|
response->write(&buffer[0], read_length);
|
||||||
if(read_length == static_cast<streamsize>(buffer.size())) {
|
if(read_length == static_cast<streamsize>(buffer.size())) {
|
||||||
server.send(response, [&server, response, ifs](const SimpleWeb::error_code &ec) mutable {
|
server->send(response, [server, response, ifs](const SimpleWeb::error_code &ec) {
|
||||||
if(!ec)
|
if(!ec)
|
||||||
default_resource_send(server, response, ifs);
|
default_resource_send(server, response, ifs);
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,8 @@ typedef SimpleWeb::Server<SimpleWeb::HTTPS> HttpsServer;
|
||||||
typedef SimpleWeb::Client<SimpleWeb::HTTPS> HttpsClient;
|
typedef SimpleWeb::Client<SimpleWeb::HTTPS> HttpsClient;
|
||||||
|
|
||||||
//Added for the default_resource example
|
//Added for the default_resource example
|
||||||
void default_resource_send(const HttpsServer &server, shared_ptr<HttpsServer::Response> &response, shared_ptr<ifstream> &ifs);
|
void default_resource_send(const shared_ptr<HttpsServer> &server,
|
||||||
|
const shared_ptr<HttpsServer::Response> &response, const shared_ptr<ifstream> &ifs);
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
//HTTPS-server at port 8080 using 1 thread
|
//HTTPS-server at port 8080 using 1 thread
|
||||||
|
|
@ -181,7 +182,7 @@ int main() {
|
||||||
|
|
||||||
header.emplace("Content-Length", to_string(length));
|
header.emplace("Content-Length", to_string(length));
|
||||||
response->write(header);
|
response->write(header);
|
||||||
default_resource_send(*server, response, ifs);
|
default_resource_send(server, response, ifs);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
throw invalid_argument("could not read file");
|
throw invalid_argument("could not read file");
|
||||||
|
|
@ -191,7 +192,7 @@ int main() {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
server->on_error = [](std::shared_ptr<HttpsServer::Request> & /*request*/, const SimpleWeb::error_code & /*ec*/) {
|
server->on_error = [](shared_ptr<HttpsServer::Request> & /*request*/, const SimpleWeb::error_code & /*ec*/) {
|
||||||
// handle errors here
|
// handle errors here
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -216,7 +217,7 @@ int main() {
|
||||||
cout << r2->content.rdbuf() << endl;
|
cout << r2->content.rdbuf() << endl;
|
||||||
|
|
||||||
// asynchronous request example
|
// asynchronous request example
|
||||||
client->request("POST", "/json", json_string, [](std::shared_ptr<HttpsClient::Response> &response, const SimpleWeb::error_code &ec) {
|
client->request("POST", "/json", json_string, [](shared_ptr<HttpsClient::Response> &response, const SimpleWeb::error_code &ec) {
|
||||||
if(!ec)
|
if(!ec)
|
||||||
cout << response->content.rdbuf() << endl;
|
cout << response->content.rdbuf() << endl;
|
||||||
});
|
});
|
||||||
|
|
@ -226,14 +227,15 @@ int main() {
|
||||||
server_thread.join();
|
server_thread.join();
|
||||||
}
|
}
|
||||||
|
|
||||||
void default_resource_send(const HttpsServer &server, shared_ptr<HttpsServer::Response> &response, shared_ptr<ifstream> &ifs) {
|
void default_resource_send(const shared_ptr<HttpsServer> &server,
|
||||||
|
const shared_ptr<HttpsServer::Response> &response, const shared_ptr<ifstream> &ifs) {
|
||||||
//read and send 128 KB at a time
|
//read and send 128 KB at a time
|
||||||
static vector<char> buffer(131072); // Safe when server is running on one thread
|
static vector<char> buffer(131072); // Safe when server is running on one thread
|
||||||
streamsize read_length;
|
streamsize read_length;
|
||||||
if((read_length = ifs->read(&buffer[0], buffer.size()).gcount()) > 0) {
|
if((read_length = ifs->read(&buffer[0], buffer.size()).gcount()) > 0) {
|
||||||
response->write(&buffer[0], read_length);
|
response->write(&buffer[0], read_length);
|
||||||
if(read_length == static_cast<streamsize>(buffer.size())) {
|
if(read_length == static_cast<streamsize>(buffer.size())) {
|
||||||
server.send(response, [&server, response, ifs](const SimpleWeb::error_code &ec) mutable {
|
server->send(response, [server, response, ifs](const SimpleWeb::error_code &ec) {
|
||||||
if(!ec)
|
if(!ec)
|
||||||
default_resource_send(server, response, ifs);
|
default_resource_send(server, response, ifs);
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -325,8 +325,8 @@ namespace SimpleWeb {
|
||||||
}
|
}
|
||||||
|
|
||||||
///Use this function if you need to recursively send parts of a longer message
|
///Use this function if you need to recursively send parts of a longer message
|
||||||
void send(std::shared_ptr<Response> &response, const std::function<void(const error_code &)> &callback = nullptr) const {
|
void send(const std::shared_ptr<Response> &response, const std::function<void(const error_code &)> &callback = nullptr) const {
|
||||||
asio::async_write(*response->socket, response->streambuf, [response, callback](const error_code &ec, size_t /*bytes_transferred*/) mutable {
|
asio::async_write(*response->socket, response->streambuf, [response, callback](const error_code &ec, size_t /*bytes_transferred*/) {
|
||||||
if(callback)
|
if(callback)
|
||||||
callback(ec);
|
callback(ec);
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue