X-Git-Url: http://git.tdb.fi/?p=libs%2Fnet.git;a=blobdiff_plain;f=source%2Fhttp%2Fclient.h;h=ebb73216a4eacfbbdfce4cc511e86f1e771395ef;hp=37acf0cfe0e3bb08d1483520e9a3cd7bc557dc76;hb=ebbf753626c9e5dd26743c379741c53f9f11866e;hpb=fa637ffb18421300e401a782d28dd729a3960ac4 diff --git a/source/http/client.h b/source/http/client.h index 37acf0c..ebb7321 100644 --- a/source/http/client.h +++ b/source/http/client.h @@ -4,6 +4,7 @@ #include #include #include +#include #include namespace Msp { @@ -26,8 +27,21 @@ public: sigc::signal signal_socket_error; private: + struct ResolveListener: public sigc::trackable + { + Client &client; + + ResolveListener(Client &); + + void address_resolved(unsigned, const Net::SockAddr &); + void resolve_failed(unsigned, const std::exception &); + }; + Net::StreamSocket *sock; IO::EventDispatcher *event_disp; + Net::Resolver *resolver; + ResolveListener *resolve_listener; + unsigned resolve_tag; std::string user_agent; Request *request; Response *response; @@ -40,6 +54,7 @@ public: ~Client(); void use_event_dispatcher(IO::EventDispatcher *); + void use_resolver(Net::Resolver *); void set_user_agent(const std::string &); void start_request(const Request &); const Response *get_url(const std::string &); @@ -49,6 +64,8 @@ public: const Request *get_request() const { return request; } const Response *get_response() const { return response; } private: + void address_resolved(unsigned, const Net::SockAddr &); + void resolve_failed(unsigned, const std::exception &); void connect_finished(const std::exception *); void data_available(); };