]> git.mxchange.org Git - simgear.git/blobdiff - simgear/io/HTTPRequest.hxx
hla: Use HLADataElementIndices for HLAInteractionClass.
[simgear.git] / simgear / io / HTTPRequest.hxx
index 1c7dc083b06b8c0e8f3b758144f53d08e5108a83..0c6e2685c6f1df956d95d1bf2388600b27c5ea8c 100644 (file)
@@ -30,6 +30,7 @@ public:
     virtual std::string host() const;
     virtual std::string hostAndPort() const;
     virtual unsigned short port() const;
+    virtual std::string query() const;
     
     virtual string_list requestHeaders() const;
     virtual std::string header(const std::string& name) const;
@@ -42,7 +43,25 @@ public:
         
     void setResponseLength(unsigned int l);    
     virtual unsigned int responseLength() const;
+  
+    /**
+     * Query the size of the request body. -1 (the default value) means no
+     * request body
+     */
+    virtual int requestBodyLength() const;
     
+    /**
+     * Retrieve the body data bytes. Will be passed the maximum body bytes
+     * to return in the buffer, and should update count with the actual number
+     * of bytes written. 
+     */
+    virtual void getBodyData(char* s, int& count) const;
+  
+    /**
+     * retrieve the request body content type. Default is text/plain
+     */
+    virtual std::string requestBodyType() const;
+  
     /**
      * running total of body bytes received so far. Can be used
      * to generate a completion percentage, if the response length is
@@ -50,6 +69,20 @@ public:
      */
     unsigned int responseBytesReceived() const
         { return _receivedBodyBytes; }
+        
+    enum HTTPVersion {
+        HTTP_VERSION_UNKNOWN = 0,
+        HTTP_0_x, // 0.9 or similar
+        HTTP_1_0,
+        HTTP_1_1
+    };
+    
+    HTTPVersion responseVersion() const
+        { return _responseVersion; }
+    
+    static HTTPVersion decodeVersion(const std::string& v);
+    
+    bool closeAfterComplete() const;
 protected:
     Request(const std::string& url, const std::string method = "GET");
 
@@ -68,10 +101,12 @@ private:
 
     std::string _method;
     std::string _url;
+    HTTPVersion _responseVersion;
     int _responseStatus;
     std::string _responseReason;
     unsigned int _responseLength;
     unsigned int _receivedBodyBytes;
+    bool _willClose;
     
     typedef std::map<std::string, std::string> HeaderDict;
     HeaderDict _responseHeaders;