]> git.tdb.fi Git - libs/net.git/blobdiff - source/http/client.h
Prepare for assimilation into mspnet
[libs/net.git] / source / http / client.h
diff --git a/source/http/client.h b/source/http/client.h
new file mode 100644 (file)
index 0000000..ee10f8c
--- /dev/null
@@ -0,0 +1,52 @@
+#ifndef MSP_HTTP_CLIENT_H_
+#define MSP_HTTP_CLIENT_H_
+
+#include <string>
+#include <sigc++/signal.h>
+#include <msp/io/eventdispatcher.h>
+#include <msp/net/streamsocket.h>
+
+namespace Msp {
+namespace Http {
+
+class Request;
+class Response;
+
+class Client
+{
+public:
+       sigc::signal<void, const Response &> signal_response_complete;
+       sigc::signal<void, const std::exception *> signal_socket_error;
+
+private:
+       Net::StreamSocket *sock;
+       IO::EventDispatcher *event_disp;
+       std::string user_agent;
+       Request *request;
+       Response *response;
+       std::string in_buf;
+
+       Client(const Client &);
+       Client &operator=(const Client &);
+public:
+       Client();
+       ~Client();
+
+       void use_event_dispatcher(IO::EventDispatcher *);
+       void set_user_agent(const std::string &);
+       void start_request(const Request &);
+       const Response *get_url(const std::string &);
+       void tick();
+       void wait_response();
+       void abort();
+       const Request *get_request() const { return request; }
+       const Response *get_response() const { return response; }
+private:
+       void connect_finished(const std::exception *);
+       void data_available();
+};
+
+} // namespace Http
+} // namespace Msp
+
+#endif