1 #ifndef MSP_HTTP_CLIENT_H_
2 #define MSP_HTTP_CLIENT_H_
6 #include <sigc++/signal.h>
7 #include <msp/io/eventdispatcher.h>
8 #include <msp/net/resolve.h>
9 #include <msp/net/streamsocket.h>
20 sigc::signal<void, const Response &> signal_response_complete;
21 sigc::signal<void, const std::exception &> signal_socket_error;
24 struct ResolveListener: public sigc::trackable
28 ResolveListener(Client &);
30 void address_resolved(unsigned, const Net::SockAddr &);
31 void resolve_failed(unsigned, const std::exception &);
34 std::unique_ptr<Net::StreamSocket> sock;
35 IO::EventDispatcher *event_disp = nullptr;
36 Net::Resolver *resolver = nullptr;
37 std::unique_ptr<ResolveListener> resolve_listener;
38 unsigned resolve_tag = 0;
39 std::string user_agent = "libmspnet/1.0";
40 std::unique_ptr<Request> request;
41 std::unique_ptr<Response> response;
47 void use_event_dispatcher(IO::EventDispatcher *);
48 void use_resolver(Net::Resolver *);
49 void set_user_agent(const std::string &);
50 void start_request(const Request &);
51 const Response *get_url(const std::string &);
55 const Request *get_request() const { return request.get(); }
56 const Response *get_response() const { return response.get(); }
58 void address_resolved(unsigned, const Net::SockAddr &);
59 void resolve_failed(unsigned, const std::exception &);
60 void connect_finished(const std::exception *);
61 void data_available();