Merge pull request #2216 from jwillemsen/jwi-cxxversionchecks
[ACE_TAO.git] / ACE / protocols / ace / INet / HTTP_Status.cpp
blobd7927115e7b48816c872876eeb311fe0796e8ace
1 #include "ace/INet/HTTP_Status.h"
2 #include "ace/INet/HeaderBase.h"
3 #include "ace/OS_NS_stdlib.h"
5 #if !defined (__ACE_INLINE__)
6 #include "ace/INet/HTTP_Status.inl"
7 #endif
10 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
12 namespace ACE
14 namespace HTTP
16 const ACE_CString Status::HTTP_REASON_CONTINUE = "Continue";
17 const ACE_CString Status::HTTP_REASON_SWITCHING_PROTOCOLS = "Switching Protocols";
18 const ACE_CString Status::HTTP_REASON_OK = "OK";
19 const ACE_CString Status::HTTP_REASON_CREATED = "Created";
20 const ACE_CString Status::HTTP_REASON_ACCEPTED = "Accepted";
21 const ACE_CString Status::HTTP_REASON_NONAUTHORITATIVE = "Non-Authoritative Information";
22 const ACE_CString Status::HTTP_REASON_NO_CONTENT = "No Content";
23 const ACE_CString Status::HTTP_REASON_RESET_CONTENT = "Reset Content";
24 const ACE_CString Status::HTTP_REASON_PARTIAL_CONTENT = "Partial Content";
25 const ACE_CString Status::HTTP_REASON_MULTIPLE_CHOICES = "Multiple Choices";
26 const ACE_CString Status::HTTP_REASON_MOVED_PERMANENTLY = "Moved Permanently";
27 const ACE_CString Status::HTTP_REASON_FOUND = "Found";
28 const ACE_CString Status::HTTP_REASON_SEE_OTHER = "See Other";
29 const ACE_CString Status::HTTP_REASON_NOT_MODIFIED = "Not Modified";
30 const ACE_CString Status::HTTP_REASON_USEPROXY = "Use Proxy";
31 const ACE_CString Status::HTTP_REASON_TEMPORARY_REDIRECT = "Temporary Redirect";
32 const ACE_CString Status::HTTP_REASON_BAD_REQUEST = "Bad Request";
33 const ACE_CString Status::HTTP_REASON_UNAUTHORIZED = "Unauthorized";
34 const ACE_CString Status::HTTP_REASON_PAYMENT_REQUIRED = "Payment Required";
35 const ACE_CString Status::HTTP_REASON_FORBIDDEN = "Forbidden";
36 const ACE_CString Status::HTTP_REASON_NOT_FOUND = "Not Found";
37 const ACE_CString Status::HTTP_REASON_METHOD_NOT_ALLOWED = "Method Not Allowed";
38 const ACE_CString Status::HTTP_REASON_NOT_ACCEPTABLE = "Not Acceptable";
39 const ACE_CString Status::HTTP_REASON_PROXY_AUTHENTICATION_REQUIRED = "Proxy Authentication Required";
40 const ACE_CString Status::HTTP_REASON_REQUEST_TIMEOUT = "Request Time-out";
41 const ACE_CString Status::HTTP_REASON_CONFLICT = "Conflict";
42 const ACE_CString Status::HTTP_REASON_GONE = "Gone";
43 const ACE_CString Status::HTTP_REASON_LENGTH_REQUIRED = "Length Required";
44 const ACE_CString Status::HTTP_REASON_PRECONDITION_FAILED = "Precondition Failed";
45 const ACE_CString Status::HTTP_REASON_REQUESTENTITYTOOLARGE = "Request Entity Too Large";
46 const ACE_CString Status::HTTP_REASON_REQUESTURITOOLONG = "Request-URI Too Large";
47 const ACE_CString Status::HTTP_REASON_UNSUPPORTEDMEDIATYPE = "Unsupported Media Type";
48 const ACE_CString Status::HTTP_REASON_REQUESTED_RANGE_NOT_SATISFIABLE = "Requested Range Not Satisfiable";
49 const ACE_CString Status::HTTP_REASON_EXPECTATION_FAILED = "Expectation Failed";
50 const ACE_CString Status::HTTP_REASON_INTERNAL_SERVER_ERROR = "Internal Server Error";
51 const ACE_CString Status::HTTP_REASON_NOT_IMPLEMENTED = "Not Implemented";
52 const ACE_CString Status::HTTP_REASON_BAD_GATEWAY = "Bad Gateway";
53 const ACE_CString Status::HTTP_REASON_SERVICE_UNAVAILABLE = "Service Unavailable";
54 const ACE_CString Status::HTTP_REASON_GATEWAY_TIMEOUT = "Gateway Time-out";
55 const ACE_CString Status::HTTP_REASON_VERSION_NOT_SUPPORTED = "HTTP Version not supported";
56 const ACE_CString Status::HTTP_REASON_UNKNOWN = "???";
58 Status::Status()
59 : code_ (HTTP_NONE)
63 Status::Status(Code status)
64 : code_ (status)
66 reason_ = get_reason(this->code_);
69 Status::Status(Code status, const ACE_CString& reason)
70 : code_ (status), reason_ (reason)
74 Status::Status(const Status& status)
76 *this = status;
79 Status& Status::operator =(const Status& status)
81 this->code_ = status.get_status ();
82 this->reason_ = status.get_reason ();
83 return *this;
86 void Status::set_status(const ACE_CString& status)
88 Code istat = (Code)ACE_OS::atoi (status.c_str ());
89 if (istat == HTTP_NONE || get_reason (istat) == HTTP_REASON_UNKNOWN)
91 this->code_ = INVALID;
93 else
95 this->code_ = istat;
99 const ACE_CString& Status::get_reason(Code status)
101 switch (status)
103 case HTTP_NONE:
104 return ACE::INet::HeaderBase::EMPTY;
105 case HTTP_CONTINUE:
106 return HTTP_REASON_CONTINUE;
107 case HTTP_SWITCHING_PROTOCOLS:
108 return HTTP_REASON_SWITCHING_PROTOCOLS;
109 case HTTP_OK:
110 return HTTP_REASON_OK;
111 case HTTP_CREATED:
112 return HTTP_REASON_CREATED;
113 case HTTP_ACCEPTED:
114 return HTTP_REASON_ACCEPTED;
115 case HTTP_NONAUTHORITATIVE:
116 return HTTP_REASON_NONAUTHORITATIVE;
117 case HTTP_NO_CONTENT:
118 return HTTP_REASON_NO_CONTENT;
119 case HTTP_RESET_CONTENT:
120 return HTTP_REASON_RESET_CONTENT;
121 case HTTP_PARTIAL_CONTENT:
122 return HTTP_REASON_PARTIAL_CONTENT;
123 case HTTP_MULTIPLE_CHOICES:
124 return HTTP_REASON_MULTIPLE_CHOICES;
125 case HTTP_MOVED_PERMANENTLY:
126 return HTTP_REASON_MOVED_PERMANENTLY;
127 case HTTP_FOUND:
128 return HTTP_REASON_FOUND;
129 case HTTP_SEE_OTHER:
130 return HTTP_REASON_SEE_OTHER;
131 case HTTP_NOT_MODIFIED:
132 return HTTP_REASON_NOT_MODIFIED;
133 case HTTP_USEPROXY:
134 return HTTP_REASON_USEPROXY;
135 case HTTP_TEMPORARY_REDIRECT:
136 return HTTP_REASON_TEMPORARY_REDIRECT;
137 case HTTP_BAD_REQUEST:
138 return HTTP_REASON_BAD_REQUEST;
139 case HTTP_UNAUTHORIZED:
140 return HTTP_REASON_UNAUTHORIZED;
141 case HTTP_PAYMENT_REQUIRED:
142 return HTTP_REASON_PAYMENT_REQUIRED;
143 case HTTP_FORBIDDEN:
144 return HTTP_REASON_FORBIDDEN;
145 case HTTP_NOT_FOUND:
146 return HTTP_REASON_NOT_FOUND;
147 case HTTP_METHOD_NOT_ALLOWED:
148 return HTTP_REASON_METHOD_NOT_ALLOWED;
149 case HTTP_NOT_ACCEPTABLE:
150 return HTTP_REASON_NOT_ACCEPTABLE;
151 case HTTP_PROXY_AUTHENTICATION_REQUIRED:
152 return HTTP_REASON_PROXY_AUTHENTICATION_REQUIRED;
153 case HTTP_REQUEST_TIMEOUT:
154 return HTTP_REASON_REQUEST_TIMEOUT;
155 case HTTP_CONFLICT:
156 return HTTP_REASON_CONFLICT;
157 case HTTP_GONE:
158 return HTTP_REASON_GONE;
159 case HTTP_LENGTH_REQUIRED:
160 return HTTP_REASON_LENGTH_REQUIRED;
161 case HTTP_PRECONDITION_FAILED:
162 return HTTP_REASON_PRECONDITION_FAILED;
163 case HTTP_REQUESTENTITYTOOLARGE:
164 return HTTP_REASON_REQUESTENTITYTOOLARGE;
165 case HTTP_REQUESTURITOOLONG:
166 return HTTP_REASON_REQUESTURITOOLONG;
167 case HTTP_UNSUPPORTEDMEDIATYPE:
168 return HTTP_REASON_UNSUPPORTEDMEDIATYPE;
169 case HTTP_REQUESTED_RANGE_NOT_SATISFIABLE:
170 return HTTP_REASON_REQUESTED_RANGE_NOT_SATISFIABLE;
171 case HTTP_EXPECTATION_FAILED:
172 return HTTP_REASON_EXPECTATION_FAILED;
173 case HTTP_INTERNAL_SERVER_ERROR:
174 return HTTP_REASON_INTERNAL_SERVER_ERROR;
175 case HTTP_NOT_IMPLEMENTED:
176 return HTTP_REASON_NOT_IMPLEMENTED;
177 case HTTP_BAD_GATEWAY:
178 return HTTP_REASON_BAD_GATEWAY;
179 case HTTP_SERVICE_UNAVAILABLE:
180 return HTTP_REASON_SERVICE_UNAVAILABLE;
181 case HTTP_GATEWAY_TIMEOUT:
182 return HTTP_REASON_GATEWAY_TIMEOUT;
183 case HTTP_VERSION_NOT_SUPPORTED:
184 return HTTP_REASON_VERSION_NOT_SUPPORTED;
185 default:
186 return HTTP_REASON_UNKNOWN;
193 ACE_END_VERSIONED_NAMESPACE_DECL