]> git.tdb.fi Git - libs/net.git/blobdiff - source/message.h
Pass an exception to signal_socket_error instead of error code
[libs/net.git] / source / message.h
index c9dc618a61eb31ce05e972a89f09f49d38ce792c..4d2310273f8b3fd0e4b0014aede99623028cd023 100644 (file)
@@ -1,40 +1,44 @@
-/* $Id$
-
-This file is part of libmsphttp
-Copyright © 2008  Mikkosoft Productions, Mikko Rasa
-Distributed under the LGPL
-*/
-
 #ifndef MSP_HTTP_MESSAGE_H_
 #define MSP_HTTP_MESSAGE_H_
 
+#include <map>
 #include <string>
-#include "misc.h"
+#include <msp/core/variant.h>
+#include "version.h"
 
 namespace Msp {
 namespace Http {
 
 class Message
 {
-public:
-       virtual ~Message() { }
-
-       void set_header(const std::string &, const std::string &);
-       const std::string &get_header(const std::string &) const;
-       const std::string &get_data() const { return data; }
-       bool get_complete() const { return complete; }
-       void add_data(const std::string &);
-       unsigned parse_data(const std::string &);
-       virtual std::string str() const =0;
 protected:
+       typedef std::map<std::string, std::string> HeaderMap;
+
        Version http_version;
        HeaderMap headers;
-       std::string data;
+       std::string content;
        unsigned chunk_length;
        bool complete;
+       Variant user_data;
 
        Message();
+public:
+       virtual ~Message() { }
+
+       void set_header(const std::string &, const std::string &);
+       bool has_header(const std::string &) const;
+       const std::string &get_header(const std::string &) const;
+       void add_content(const std::string &);
+       const std::string &get_content() const { return content; }
+       void set_user_data(const Variant &);
+       const Variant &get_user_data() const { return user_data; }
+       bool is_complete() const { return complete; }
+       unsigned parse_content(const std::string &);
+       virtual std::string str() const = 0;
+protected:
+       unsigned parse_headers(const std::string &);
        std::string str_common() const;
+       std::string normalize_header_name(const std::string &) const;
 };
 
 } // namespace Http