Merge pull request #2216 from jwillemsen/jwi-cxxversionchecks
[ACE_TAO.git] / ACE / protocols / ace / INet / HTTP_Status.h
blob564a41f26678ca4031868c3f891d0db5043c37b9
1 /**
2 * @file HTTP_Status.h
4 * @author Martin Corino <mcorino@remedy.nl>
5 */
7 #ifndef ACE_HTTP_STATUS_H
8 #define ACE_HTTP_STATUS_H
10 #include /**/ "ace/pre.h"
12 #include /**/ "ace/config-all.h"
14 #if !defined (ACE_LACKS_PRAGMA_ONCE)
15 # pragma once
16 #endif /* ACE_LACKS_PRAGMA_ONCE */
18 #include "ace/SString.h"
19 #include "ace/INet/INet_Export.h"
21 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
23 namespace ACE
25 namespace HTTP
27 /**
28 * @class ACE_HTTP_Status
30 * @brief Encapsulates HTTP status codes and reasons.
33 class ACE_INET_Export Status
35 public:
36 enum Code
38 INVALID = -1,
39 HTTP_NONE = 0,
40 HTTP_CONTINUE = 100,
41 HTTP_SWITCHING_PROTOCOLS = 101,
42 HTTP_OK = 200,
43 HTTP_CREATED = 201,
44 HTTP_ACCEPTED = 202,
45 HTTP_NONAUTHORITATIVE = 203,
46 HTTP_NO_CONTENT = 204,
47 HTTP_RESET_CONTENT = 205,
48 HTTP_PARTIAL_CONTENT = 206,
49 HTTP_MULTIPLE_CHOICES = 300,
50 HTTP_MOVED_PERMANENTLY = 301,
51 HTTP_FOUND = 302,
52 HTTP_SEE_OTHER = 303,
53 HTTP_NOT_MODIFIED = 304,
54 HTTP_USEPROXY = 305,
55 // 306 not defined
56 HTTP_TEMPORARY_REDIRECT = 307,
57 HTTP_BAD_REQUEST = 400,
58 HTTP_UNAUTHORIZED = 401,
59 HTTP_PAYMENT_REQUIRED = 402,
60 HTTP_FORBIDDEN = 403,
61 HTTP_NOT_FOUND = 404,
62 HTTP_METHOD_NOT_ALLOWED = 405,
63 HTTP_NOT_ACCEPTABLE = 406,
64 HTTP_PROXY_AUTHENTICATION_REQUIRED = 407,
65 HTTP_REQUEST_TIMEOUT = 408,
66 HTTP_CONFLICT = 409,
67 HTTP_GONE = 410,
68 HTTP_LENGTH_REQUIRED = 411,
69 HTTP_PRECONDITION_FAILED = 412,
70 HTTP_REQUESTENTITYTOOLARGE = 413,
71 HTTP_REQUESTURITOOLONG = 414,
72 HTTP_UNSUPPORTEDMEDIATYPE = 415,
73 HTTP_REQUESTED_RANGE_NOT_SATISFIABLE = 416,
74 HTTP_EXPECTATION_FAILED = 417,
75 HTTP_INTERNAL_SERVER_ERROR = 500,
76 HTTP_NOT_IMPLEMENTED = 501,
77 HTTP_BAD_GATEWAY = 502,
78 HTTP_SERVICE_UNAVAILABLE = 503,
79 HTTP_GATEWAY_TIMEOUT = 504,
80 HTTP_VERSION_NOT_SUPPORTED = 505
83 /// Constructor; sets value to OK
84 Status();
86 /// Constructor; sets corresponding reason
87 Status(Code status);
89 /// Constructor
90 Status(Code status, const ACE_CString& reason);
92 /// Copy constructor
93 Status(const Status& status);
95 /// Copy assignment
96 Status& operator =(const Status& status);
98 /// Set the status code.
99 void set_status(Code status);
101 /// Set the status code.
102 /// String must contain valid numeric code.
103 void set_status(const ACE_CString& status);
105 /// Return the status code.
106 Code get_status() const;
108 /// Set the reason phrase.
109 void set_reason(const ACE_CString& reason);
111 /// Return the reason phrase.
112 const ACE_CString& get_reason() const;
114 /// Set the status code and corresponding reason phrase.
115 void set_status_and_reason(Code status);
117 /// Return true if status code != INVALID
118 bool is_valid () const;
120 /// Return true if status code == OK
121 bool is_ok () const;
123 /// Return true in case of a *valid* HTTP status
124 operator bool () const;
126 /// Return true if status code == INVALID
127 bool operator !() const;
129 /// Returns an appropriate reason phrase
130 static const ACE_CString& get_reason(Code status);
132 static const ACE_CString HTTP_REASON_CONTINUE;
133 static const ACE_CString HTTP_REASON_SWITCHING_PROTOCOLS;
134 static const ACE_CString HTTP_REASON_OK;
135 static const ACE_CString HTTP_REASON_CREATED;
136 static const ACE_CString HTTP_REASON_ACCEPTED;
137 static const ACE_CString HTTP_REASON_NONAUTHORITATIVE;
138 static const ACE_CString HTTP_REASON_NO_CONTENT;
139 static const ACE_CString HTTP_REASON_RESET_CONTENT;
140 static const ACE_CString HTTP_REASON_PARTIAL_CONTENT;
141 static const ACE_CString HTTP_REASON_MULTIPLE_CHOICES;
142 static const ACE_CString HTTP_REASON_MOVED_PERMANENTLY;
143 static const ACE_CString HTTP_REASON_FOUND;
144 static const ACE_CString HTTP_REASON_SEE_OTHER;
145 static const ACE_CString HTTP_REASON_NOT_MODIFIED;
146 static const ACE_CString HTTP_REASON_USEPROXY;
147 static const ACE_CString HTTP_REASON_TEMPORARY_REDIRECT;
148 static const ACE_CString HTTP_REASON_BAD_REQUEST;
149 static const ACE_CString HTTP_REASON_UNAUTHORIZED;
150 static const ACE_CString HTTP_REASON_PAYMENT_REQUIRED;
151 static const ACE_CString HTTP_REASON_FORBIDDEN;
152 static const ACE_CString HTTP_REASON_NOT_FOUND;
153 static const ACE_CString HTTP_REASON_METHOD_NOT_ALLOWED;
154 static const ACE_CString HTTP_REASON_NOT_ACCEPTABLE;
155 static const ACE_CString HTTP_REASON_PROXY_AUTHENTICATION_REQUIRED;
156 static const ACE_CString HTTP_REASON_REQUEST_TIMEOUT;
157 static const ACE_CString HTTP_REASON_CONFLICT;
158 static const ACE_CString HTTP_REASON_GONE;
159 static const ACE_CString HTTP_REASON_LENGTH_REQUIRED;
160 static const ACE_CString HTTP_REASON_PRECONDITION_FAILED;
161 static const ACE_CString HTTP_REASON_REQUESTENTITYTOOLARGE;
162 static const ACE_CString HTTP_REASON_REQUESTURITOOLONG;
163 static const ACE_CString HTTP_REASON_UNSUPPORTEDMEDIATYPE;
164 static const ACE_CString HTTP_REASON_REQUESTED_RANGE_NOT_SATISFIABLE;
165 static const ACE_CString HTTP_REASON_EXPECTATION_FAILED;
166 static const ACE_CString HTTP_REASON_INTERNAL_SERVER_ERROR;
167 static const ACE_CString HTTP_REASON_NOT_IMPLEMENTED;
168 static const ACE_CString HTTP_REASON_BAD_GATEWAY;
169 static const ACE_CString HTTP_REASON_SERVICE_UNAVAILABLE;
170 static const ACE_CString HTTP_REASON_GATEWAY_TIMEOUT;
171 static const ACE_CString HTTP_REASON_VERSION_NOT_SUPPORTED;
172 static const ACE_CString HTTP_REASON_UNKNOWN;
174 private:
175 Code code_;
176 ACE_CString reason_;
181 ACE_END_VERSIONED_NAMESPACE_DECL
183 #if defined (__ACE_INLINE__)
184 #include "ace/INet/HTTP_Status.inl"
185 #endif
187 #include /**/ "ace/post.h"
188 #endif /* ACE_HTTP_STATUS_H */