]> git.tdb.fi Git - libs/net.git/blob - source/client.h
Pass an exception to signal_socket_error instead of error code
[libs/net.git] / source / client.h
1 #ifndef MSP_HTTP_CLIENT_H_
2 #define MSP_HTTP_CLIENT_H_
3
4 #include <string>
5 #include <sigc++/signal.h>
6 #include <msp/io/eventdispatcher.h>
7 #include <msp/net/streamsocket.h>
8
9 namespace Msp {
10 namespace Http {
11
12 class Request;
13 class Response;
14
15 class Client
16 {
17 public:
18         sigc::signal<void, const Response &> signal_response_complete;
19         sigc::signal<void, const std::exception *> signal_socket_error;
20
21 private:
22         Net::StreamSocket *sock;
23         IO::EventDispatcher *event_disp;
24         std::string user_agent;
25         Request *request;
26         Response *response;
27         std::string in_buf;
28
29         Client(const Client &);
30         Client &operator=(const Client &);
31 public:
32         Client();
33         ~Client();
34
35         void use_event_dispatcher(IO::EventDispatcher *);
36         void set_user_agent(const std::string &);
37         void start_request(const Request &);
38         const Response *get_url(const std::string &);
39         void tick();
40         void wait_response();
41         void abort();
42         const Request *get_request() const { return request; }
43         const Response *get_response() const { return response; }
44 private:
45         void connect_finished(const std::exception *);
46         void data_available();
47 };
48
49 } // namespace Http
50 } // namespace Msp
51
52 #endif