summaryrefslogtreecommitdiff
path: root/ACE/apps/JAWS/server/HTTP_Response.h
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/apps/JAWS/server/HTTP_Response.h')
-rw-r--r--ACE/apps/JAWS/server/HTTP_Response.h78
1 files changed, 78 insertions, 0 deletions
diff --git a/ACE/apps/JAWS/server/HTTP_Response.h b/ACE/apps/JAWS/server/HTTP_Response.h
new file mode 100644
index 00000000000..05a595a9fdf
--- /dev/null
+++ b/ACE/apps/JAWS/server/HTTP_Response.h
@@ -0,0 +1,78 @@
+/* -*- c++ -*- */
+
+//=============================================================================
+/**
+ * @file HTTP_Response.h
+ *
+ * $Id$
+ *
+ * @author James Hu
+ */
+//=============================================================================
+
+
+#ifndef HTTP_RESPONSE_H
+#define HTTP_RESPONSE_H
+
+class JAWS_IO;
+class HTTP_Request;
+
+/**
+ * @class HTTP_Response
+ *
+ * @brief Abstraction for HTTP responses.
+ *
+ * Provides an encapsulation of responses to HTTP requests.
+ * For instance, given an HTTP GET request, it will produce
+ * header and body suitable for returning to the client who made
+ * the request.
+ */
+class HTTP_Response
+{
+public:
+ HTTP_Response (JAWS_IO &io,
+ HTTP_Request &request);
+ HTTP_Response (HTTP_Request &request, JAWS_IO &io);
+ ~HTTP_Response (void);
+
+ /// This is called by the handler to initiate a response.
+ void process_request (void);
+
+ /// This returns an error response for cases where there is a problem
+ /// with the request, logging the log_message.
+ void error_response (int status,
+ const char *log_message);
+
+private:
+
+ /// Called by process_request when the request is a normal request.
+ void normal_response (void);
+
+ /// Called by process_request when the request is a cgi request.
+ void cgi_response (void);
+
+private:
+
+ /// static version of process_request, just in case.
+ static void process_request (HTTP_Response &response);
+
+ /// creates the appropriate header information for responses.
+ void build_headers (void);
+
+private:
+ /// The IO and Request objects associated with this re
+ JAWS_IO &io_;
+ HTTP_Request &request_;
+
+#if defined (ACE_JAWS_BASELINE)
+ char *HTTP_HEADER;
+#else
+ const char *HTTP_HEADER;
+#endif
+ /// HTTP Headers and trailers.
+ const char *HTTP_TRAILER;
+ int HTTP_HEADER_LENGTH;
+ int HTTP_TRAILER_LENGTH;
+};
+
+#endif /* HTTP_RESPONSE_H */