Slight optimisation: less copies of shared_ptr objects
This commit is contained in:
parent
1c904b018f
commit
d94f6d6d27
4 changed files with 16 additions and 16 deletions
|
|
@ -145,7 +145,7 @@ namespace SimpleWeb {
|
|||
|
||||
virtual void connect()=0;
|
||||
|
||||
void parse_response_header(std::shared_ptr<Response> response, std::istream& stream) const {
|
||||
void parse_response_header(const std::shared_ptr<Response> &response, std::istream& stream) const {
|
||||
std::string line;
|
||||
getline(stream, line);
|
||||
size_t version_end=line.find(' ');
|
||||
|
|
|
|||
|
|
@ -20,8 +20,8 @@ typedef SimpleWeb::Server<SimpleWeb::HTTP> HttpServer;
|
|||
typedef SimpleWeb::Client<SimpleWeb::HTTP> HttpClient;
|
||||
|
||||
//Added for the default_resource example
|
||||
void default_resource_send(const HttpServer &server, shared_ptr<HttpServer::Response> response,
|
||||
shared_ptr<ifstream> ifs, shared_ptr<vector<char> > buffer);
|
||||
void default_resource_send(const HttpServer &server, const shared_ptr<HttpServer::Response> &response,
|
||||
const shared_ptr<ifstream> &ifs, const shared_ptr<vector<char> > &buffer);
|
||||
|
||||
int main() {
|
||||
//HTTP-server at port 8080 using 1 thread
|
||||
|
|
@ -167,8 +167,8 @@ int main() {
|
|||
return 0;
|
||||
}
|
||||
|
||||
void default_resource_send(const HttpServer &server, shared_ptr<HttpServer::Response> response,
|
||||
shared_ptr<ifstream> ifs, shared_ptr<vector<char> > buffer) {
|
||||
void default_resource_send(const HttpServer &server, const shared_ptr<HttpServer::Response> &response,
|
||||
const shared_ptr<ifstream> &ifs, const 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);
|
||||
|
|
|
|||
|
|
@ -20,8 +20,8 @@ typedef SimpleWeb::Server<SimpleWeb::HTTPS> HttpsServer;
|
|||
typedef SimpleWeb::Client<SimpleWeb::HTTPS> HttpsClient;
|
||||
|
||||
//Added for the default_resource example
|
||||
void default_resource_send(const HttpsServer &server, shared_ptr<HttpsServer::Response> response,
|
||||
shared_ptr<ifstream> ifs, shared_ptr<vector<char> > buffer);
|
||||
void default_resource_send(const HttpsServer &server, const shared_ptr<HttpsServer::Response> &response,
|
||||
const shared_ptr<ifstream> &ifs, const shared_ptr<vector<char> > &buffer);
|
||||
|
||||
int main() {
|
||||
//HTTPS-server at port 8080 using 1 thread
|
||||
|
|
@ -168,8 +168,8 @@ int main() {
|
|||
return 0;
|
||||
}
|
||||
|
||||
void default_resource_send(const HttpsServer &server, shared_ptr<HttpsServer::Response> response,
|
||||
shared_ptr<ifstream> ifs, shared_ptr<vector<char> > buffer) {
|
||||
void default_resource_send(const HttpsServer &server, const shared_ptr<HttpsServer::Response> &response,
|
||||
const shared_ptr<ifstream> &ifs, const 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);
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ namespace SimpleWeb {
|
|||
|
||||
std::shared_ptr<socket_type> socket;
|
||||
|
||||
Response(std::shared_ptr<socket_type> socket): std::ostream(&streambuf), socket(socket) {}
|
||||
Response(const std::shared_ptr<socket_type> &socket): std::ostream(&streambuf), socket(socket) {}
|
||||
|
||||
public:
|
||||
size_t size() {
|
||||
|
|
@ -174,7 +174,7 @@ namespace SimpleWeb {
|
|||
}
|
||||
|
||||
///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 boost::system::error_code&)>& callback=nullptr) const {
|
||||
void send(const std::shared_ptr<Response> &response, const std::function<void(const boost::system::error_code&)>& callback=nullptr) const {
|
||||
boost::asio::async_write(*response->socket, response->streambuf, [this, response, callback](const boost::system::error_code& ec, size_t /*bytes_transferred*/) {
|
||||
if(callback)
|
||||
callback(ec);
|
||||
|
|
@ -195,7 +195,7 @@ namespace SimpleWeb {
|
|||
|
||||
virtual void accept()=0;
|
||||
|
||||
std::shared_ptr<boost::asio::deadline_timer> set_timeout_on_socket(std::shared_ptr<socket_type> socket, long seconds) {
|
||||
std::shared_ptr<boost::asio::deadline_timer> set_timeout_on_socket(const std::shared_ptr<socket_type> &socket, long seconds) {
|
||||
std::shared_ptr<boost::asio::deadline_timer> timer(new boost::asio::deadline_timer(io_service));
|
||||
timer->expires_from_now(boost::posix_time::seconds(seconds));
|
||||
timer->async_wait([socket](const boost::system::error_code& ec){
|
||||
|
|
@ -208,7 +208,7 @@ namespace SimpleWeb {
|
|||
return timer;
|
||||
}
|
||||
|
||||
void read_request_and_content(std::shared_ptr<socket_type> socket) {
|
||||
void read_request_and_content(const std::shared_ptr<socket_type> &socket) {
|
||||
//Create new streambuf (Request::streambuf) for async_read_until()
|
||||
//shared_ptr is used to pass temporary objects to the asynchronous functions
|
||||
std::shared_ptr<Request> request(new Request());
|
||||
|
|
@ -280,7 +280,7 @@ namespace SimpleWeb {
|
|||
});
|
||||
}
|
||||
|
||||
bool parse_request(std::shared_ptr<Request> request, std::istream& stream) const {
|
||||
bool parse_request(const std::shared_ptr<Request> &request, std::istream& stream) const {
|
||||
std::string line;
|
||||
getline(stream, line);
|
||||
size_t method_end;
|
||||
|
|
@ -321,7 +321,7 @@ namespace SimpleWeb {
|
|||
return true;
|
||||
}
|
||||
|
||||
void find_resource(std::shared_ptr<socket_type> socket, std::shared_ptr<Request> request) {
|
||||
void find_resource(const std::shared_ptr<socket_type> &socket, const std::shared_ptr<Request> &request) {
|
||||
//Find path- and method-match, and call write_response
|
||||
for(auto& res: opt_resource) {
|
||||
if(request->method==res.first) {
|
||||
|
|
@ -341,7 +341,7 @@ namespace SimpleWeb {
|
|||
}
|
||||
}
|
||||
|
||||
void write_response(std::shared_ptr<socket_type> socket, std::shared_ptr<Request> request,
|
||||
void write_response(const std::shared_ptr<socket_type> &socket, const std::shared_ptr<Request> &request,
|
||||
std::function<void(std::shared_ptr<typename ServerBase<socket_type>::Response>,
|
||||
std::shared_ptr<typename ServerBase<socket_type>::Request>)>& resource_function) {
|
||||
//Set timeout on the following boost::asio::async-read or write function
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue