From a69e32290fbe9cfee24ce357f8297512bb292ce0 Mon Sep 17 00:00:00 2001 From: eidheim Date: Tue, 4 Jul 2017 09:17:36 +0200 Subject: [PATCH] Server::send response parameter changed to const. Some cleanup of examples related to this. --- http_examples.cpp | 14 ++++++++------ https_examples.cpp | 14 ++++++++------ server_http.hpp | 4 ++-- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/http_examples.cpp b/http_examples.cpp index 6434f21..5fa5ea7 100644 --- a/http_examples.cpp +++ b/http_examples.cpp @@ -23,7 +23,8 @@ typedef SimpleWeb::Server HttpServer; typedef SimpleWeb::Client HttpClient; //Added for the default_resource example -void default_resource_send(const HttpServer &server, shared_ptr &response, shared_ptr &ifs); +void default_resource_send(const shared_ptr &server, + const shared_ptr &response, const shared_ptr &ifs); int main() { //HTTP-server at port 8080 using 1 thread @@ -183,7 +184,7 @@ int main() { header.emplace("Content-Length", to_string(length)); response->write(header); - default_resource_send(*server, response, ifs); + default_resource_send(server, response, ifs); } else throw invalid_argument("could not read file"); @@ -193,7 +194,7 @@ int main() { } }; - server->on_error = [](std::shared_ptr & /*request*/, const SimpleWeb::error_code & /*ec*/) { + server->on_error = [](shared_ptr & /*request*/, const SimpleWeb::error_code & /*ec*/) { // handle errors here }; @@ -217,7 +218,7 @@ int main() { cout << r2->content.rdbuf() << endl; // asynchronous request example - client->request("POST", "/json", json_string, [](std::shared_ptr &response, const SimpleWeb::error_code &ec) { + client->request("POST", "/json", json_string, [](shared_ptr &response, const SimpleWeb::error_code &ec) { if(!ec) cout << response->content.rdbuf() << endl; }); @@ -227,14 +228,15 @@ int main() { server_thread.join(); } -void default_resource_send(const HttpServer &server, shared_ptr &response, shared_ptr &ifs) { +void default_resource_send(const shared_ptr &server, + const shared_ptr &response, const shared_ptr &ifs) { //read and send 128 KB at a time static vector 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(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) default_resource_send(server, response, ifs); else diff --git a/https_examples.cpp b/https_examples.cpp index 4e773fe..ddec9ac 100644 --- a/https_examples.cpp +++ b/https_examples.cpp @@ -21,7 +21,8 @@ typedef SimpleWeb::Server HttpsServer; typedef SimpleWeb::Client HttpsClient; //Added for the default_resource example -void default_resource_send(const HttpsServer &server, shared_ptr &response, shared_ptr &ifs); +void default_resource_send(const shared_ptr &server, + const shared_ptr &response, const shared_ptr &ifs); int main() { //HTTPS-server at port 8080 using 1 thread @@ -181,7 +182,7 @@ int main() { header.emplace("Content-Length", to_string(length)); response->write(header); - default_resource_send(*server, response, ifs); + default_resource_send(server, response, ifs); } else throw invalid_argument("could not read file"); @@ -191,7 +192,7 @@ int main() { } }; - server->on_error = [](std::shared_ptr & /*request*/, const SimpleWeb::error_code & /*ec*/) { + server->on_error = [](shared_ptr & /*request*/, const SimpleWeb::error_code & /*ec*/) { // handle errors here }; @@ -216,7 +217,7 @@ int main() { cout << r2->content.rdbuf() << endl; // asynchronous request example - client->request("POST", "/json", json_string, [](std::shared_ptr &response, const SimpleWeb::error_code &ec) { + client->request("POST", "/json", json_string, [](shared_ptr &response, const SimpleWeb::error_code &ec) { if(!ec) cout << response->content.rdbuf() << endl; }); @@ -226,14 +227,15 @@ int main() { server_thread.join(); } -void default_resource_send(const HttpsServer &server, shared_ptr &response, shared_ptr &ifs) { +void default_resource_send(const shared_ptr &server, + const shared_ptr &response, const shared_ptr &ifs) { //read and send 128 KB at a time static vector 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(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) default_resource_send(server, response, ifs); else diff --git a/server_http.hpp b/server_http.hpp index a0271ac..55fdc62 100644 --- a/server_http.hpp +++ b/server_http.hpp @@ -325,8 +325,8 @@ namespace SimpleWeb { } ///Use this function if you need to recursively send parts of a longer message - void send(std::shared_ptr &response, const std::function &callback = nullptr) const { - asio::async_write(*response->socket, response->streambuf, [response, callback](const error_code &ec, size_t /*bytes_transferred*/) mutable { + void send(const std::shared_ptr &response, const std::function &callback = nullptr) const { + asio::async_write(*response->socket, response->streambuf, [response, callback](const error_code &ec, size_t /*bytes_transferred*/) { if(callback) callback(ec); });