X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;ds=sidebyside;f=source%2Fhttp%2Fclient.h;h=c88ce32df2cd62b55f4c41a66db66e6295470d4b;hb=1c300cbe77a7084951a080020361fc45bd190253;hp=ee10f8c1cb5a0e389d860c6b9c59ee6a45aeb9a4;hpb=debe1004676d5431e571d9c4361072661dcc88c4;p=libs%2Fnet.git diff --git a/source/http/client.h b/source/http/client.h index ee10f8c..c88ce32 100644 --- a/source/http/client.h +++ b/source/http/client.h @@ -4,6 +4,7 @@ #include #include #include +#include #include namespace Msp { @@ -16,23 +17,36 @@ class Client { public: sigc::signal signal_response_complete; - sigc::signal signal_socket_error; + sigc::signal signal_socket_error; private: - Net::StreamSocket *sock; - IO::EventDispatcher *event_disp; - std::string user_agent; - Request *request; - Response *response; + 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 = 0; + IO::EventDispatcher *event_disp = 0; + Net::Resolver *resolver = 0; + ResolveListener *resolve_listener = 0; + unsigned resolve_tag = 0; + std::string user_agent = "libmspnet/1.0"; + Request *request = 0; + Response *response = 0; std::string in_buf; Client(const Client &); Client &operator=(const Client &); public: - Client(); ~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 &); @@ -42,6 +56,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(); };