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