X-Git-Url: http://git.tdb.fi/?p=libs%2Fnet.git;a=blobdiff_plain;f=source%2Fhttp%2Fclient.cpp;fp=source%2Fhttp%2Fclient.cpp;h=e8790aa65bcc8b57e6d4dcb557319a7161f71c68;hp=30c336e3e1bf627867d7e4a75ffd3d7a763f352a;hb=ede42d5bb352841e2e425972e12b8ef31ddf2123;hpb=1565dec0f4a86e4bda7095dd7415234f7c7a84e9 diff --git a/source/http/client.cpp b/source/http/client.cpp index 30c336e..e8790aa 100644 --- a/source/http/client.cpp +++ b/source/http/client.cpp @@ -1,5 +1,4 @@ #include -#include #include #include #include "client.h" @@ -13,9 +12,6 @@ namespace Http { Client::~Client() { - delete sock; - delete request; - delete response; } void Client::use_event_dispatcher(IO::EventDispatcher *ed) @@ -30,14 +26,11 @@ void Client::use_event_dispatcher(IO::EventDispatcher *ed) void Client::use_resolver(Net::Resolver *r) { if(resolver) - { - delete resolve_listener; - resolve_listener = nullptr; - } + resolve_listener.reset(); resolver = r; if(resolver) - resolve_listener = new ResolveListener(*this); + resolve_listener = make_unique(*this); } void Client::start_request(const Request &r) @@ -45,15 +38,13 @@ void Client::start_request(const Request &r) if(request) throw invalid_state("already processing a request"); - delete sock; - sock = nullptr; + sock.reset(); - request = new Request(r); + request = make_unique(r); if(!user_agent.empty()) request->set_header("User-Agent", user_agent); - delete response; - response = nullptr; + response.reset(); in_buf.clear(); string host = r.get_header("Host"); @@ -63,7 +54,7 @@ void Client::start_request(const Request &r) resolve_tag = resolver->resolve(host); else { - RefPtr addr = Net::resolve(host); + unique_ptr addr(Net::resolve(host)); address_resolved(resolve_tag, *addr); } } @@ -72,7 +63,7 @@ const Response *Client::get_url(const std::string &url) { start_request(Request::from_url(url)); wait_response(); - return response; + return response.get(); } void Client::tick() @@ -87,10 +78,8 @@ void Client::tick() { signal_response_complete.emit(*response); - delete sock; - sock = nullptr; - delete request; - request = nullptr; + sock.reset(); + request.reset(); } } @@ -102,10 +91,8 @@ void Client::wait_response() void Client::abort() { - delete sock; - sock = nullptr; - delete request; - request = nullptr; + sock.reset(); + request.reset(); } void Client::address_resolved(unsigned tag, const Net::SockAddr &addr) @@ -114,7 +101,7 @@ void Client::address_resolved(unsigned tag, const Net::SockAddr &addr) return; resolve_tag = 0; - sock = new Net::StreamSocket(addr.get_family()); + sock = make_unique(addr.get_family()); sock->set_block(false); sock->signal_data_available.connect(sigc::mem_fun(this, &Client::data_available)); @@ -131,8 +118,7 @@ void Client::resolve_failed(unsigned tag, const exception &err) return; resolve_tag = 0; - delete request; - request = nullptr; + request.reset(); if(signal_socket_error.empty()) throw err; @@ -143,8 +129,7 @@ void Client::connect_finished(const exception *err) { if(err) { - delete request; - request = nullptr; + request.reset(); if(signal_socket_error.empty()) throw *err; @@ -190,7 +175,7 @@ void Client::data_available() { if(in_buf.find("\r\n\r\n")!=string::npos || in_buf.find("\n\n")!=string::npos) { - response = new Response(Response::parse(in_buf)); + response = make_unique(Response::parse(in_buf)); response->set_user_data(request->get_user_data()); in_buf = string(); } @@ -205,8 +190,7 @@ void Client::data_available() { signal_response_complete.emit(*response); - delete request; - request = nullptr; + request.reset(); } }