#include <HTTP_ClientRequestHandler.h>
Classes | |
class | HttpConnectionKey |
Public Member Functions | |
ClientRequestHandler () | |
virtual | ~ClientRequestHandler () |
virtual Request & | request () |
virtual const Request & | request () const |
virtual Response & | response () |
virtual const Response & | response () const |
std::ostream & | request_stream () |
virtual std::istream & | response_stream () |
virtual bool | is_response_ok () const |
virtual std::istream & | handle_open_request (const ACE::INet::URL_Base &url) |
virtual std::istream & | handle_get_request (const URL &url) |
Protected Member Functions | |
virtual void | on_eof () |
SessionHolder & | session () |
void | session (SessionHolder *session) |
virtual bool | initialize_connection (const ACE_CString &scheme, const ACE_CString &host, u_short port, bool proxy_conn=false, const ACE_CString &proxy_host=Request::EMPTY, u_short proxy_port=0) |
virtual void | initialize_request (const URL &url, Request &request) |
virtual void | handle_request_error (const URL &url) |
virtual void | handle_connection_error (const URL &url) |
void | release_connection () |
void | close_connection () |
Private Attributes | |
Request | request_ |
Response | response_ |
SessionHolder * | session_ |
Definition at line 146 of file HTTP_ClientRequestHandler.h.
ACE::HTTP::ClientRequestHandler::ClientRequestHandler | ( | ) |
Definition at line 190 of file HTTP_ClientRequestHandler.cpp.
: request_ (Request::HTTP_1_0), session_ (0) { }
ACE::HTTP::ClientRequestHandler::~ClientRequestHandler | ( | ) | [virtual] |
Definition at line 196 of file HTTP_ClientRequestHandler.cpp.
{ this->release_connection (); }
void ACE::HTTP::ClientRequestHandler::close_connection | ( | ) | [protected] |
Definition at line 340 of file HTTP_ClientRequestHandler.cpp.
{ if (this->session_) { if (this->session ()->is_proxy_connection ()) { this->connection_cache ().release_connection ( HttpConnectionKey (this->session ()->get_host (), this->session ()->get_port (), this->session ()->get_proxy_target_host (), this->session ()->get_proxy_target_port ()), this->session_); } else { this->connection_cache ().release_connection ( HttpConnectionKey (this->session ()->get_host (), this->session ()->get_port ()), this->session_); } this->session_ = 0; } }
void ACE::HTTP::ClientRequestHandler::handle_connection_error | ( | const URL & | url | ) | [protected, virtual] |
Reimplemented in My_HTTP_RequestHandler.
Definition at line 312 of file HTTP_ClientRequestHandler.cpp.
{ }
std::istream & ACE::HTTP::ClientRequestHandler::handle_get_request | ( | const URL & | url | ) | [virtual] |
Definition at line 214 of file HTTP_ClientRequestHandler.cpp.
{ bool connected = false; if (http_url.has_proxy ()) connected = this->initialize_connection (http_url.get_scheme (), http_url.get_host(), http_url.get_port (), true, http_url.get_proxy_host(), http_url.get_proxy_port ()); else connected = this->initialize_connection (http_url.get_scheme (), http_url.get_host(), http_url.get_port ()); if (connected) { this->request_.reset (Request::HTTP_GET, http_url.get_request_uri (), this->request_.get_version ()); this->response_.reset (); this->initialize_request (http_url, this->request_); if (!this->session ()->send_request (this->request_) || !this->session ()->receive_response (this->response_)) { this->close_connection (); this->handle_request_error(http_url); } } else { this->handle_connection_error (http_url); } return this->response_stream (); }
std::istream & ACE::HTTP::ClientRequestHandler::handle_open_request | ( | const ACE::INet::URL_Base & | url | ) | [virtual] |
Definition at line 207 of file HTTP_ClientRequestHandler.cpp.
{ const URL& http_url = dynamic_cast<const URL&> (url); return this->handle_get_request (http_url); }
void ACE::HTTP::ClientRequestHandler::handle_request_error | ( | const URL & | url | ) | [protected, virtual] |
Reimplemented in My_HTTP_RequestHandler.
Definition at line 308 of file HTTP_ClientRequestHandler.cpp.
{ }
bool ACE::HTTP::ClientRequestHandler::initialize_connection | ( | const ACE_CString & | scheme, | |
const ACE_CString & | host, | |||
u_short | port, | |||
bool | proxy_conn = false , |
|||
const ACE_CString & | proxy_host = Request::EMPTY , |
|||
u_short | proxy_port = 0 | |||
) | [protected, virtual] |
Definition at line 261 of file HTTP_ClientRequestHandler.cpp.
{ SessionFactory* session_factory = SessionFactoryRegistry::instance ().find_session_factory (scheme); if (session_factory == 0) { INET_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT ("ClientRequestHandler::initialize_connection - ") ACE_TEXT ("unable to find session factory for scheme [%C]\n"), scheme.c_str ())); return false; } ACE::INet::ConnectionHolder* pch = 0; if (proxy_conn) { if (!this->connection_cache ().claim_connection (HttpConnectionKey (proxy_host, proxy_port, host, port), pch, *session_factory)) return false; } else { if (!this->connection_cache ().claim_connection (HttpConnectionKey (host, port), pch, *session_factory)) return false; } this->session (dynamic_cast<SessionHolder*> (pch)); return true; }
void ACE::HTTP::ClientRequestHandler::initialize_request | ( | const URL & | url, | |
Request & | request | |||
) | [protected, virtual] |
Definition at line 304 of file HTTP_ClientRequestHandler.cpp.
{ }
bool ACE::HTTP::ClientRequestHandler::is_response_ok | ( | ) | const [virtual] |
Definition at line 201 of file HTTP_ClientRequestHandler.cpp.
{ return this->response_.get_status ().is_ok () && !const_cast<ClientRequestHandler*> (this)->response_stream ().bad (); }
void ACE::HTTP::ClientRequestHandler::on_eof | ( | void | ) | [protected, virtual] |
Reimplemented from ACE::IOS::StreamInterceptorBase< ACE_CHAR_T, TR >.
Reimplemented in My_HTTP_RequestHandler.
Definition at line 256 of file HTTP_ClientRequestHandler.cpp.
{ this->release_connection (); }
void ACE::HTTP::ClientRequestHandler::release_connection | ( | ) | [protected] |
Definition at line 316 of file HTTP_ClientRequestHandler.cpp.
{ if (this->session_) { if (this->session ()->is_proxy_connection ()) { this->connection_cache ().release_connection ( HttpConnectionKey (this->session ()->get_host (), this->session ()->get_port (), this->session ()->get_proxy_target_host (), this->session ()->get_proxy_target_port ()), this->session_); } else { this->connection_cache ().release_connection ( HttpConnectionKey (this->session ()->get_host (), this->session ()->get_port ()), this->session_); } this->session_ = 0; } }
const Request & ACE::HTTP::ClientRequestHandler::request | ( | ) | const [inline, virtual] |
Definition at line 48 of file HTTP_ClientRequestHandler.inl.
{ return this->request_; }
Request & ACE::HTTP::ClientRequestHandler::request | ( | ) | [inline, virtual] |
Definition at line 42 of file HTTP_ClientRequestHandler.inl.
{ return this->request_; }
std::ostream & ACE::HTTP::ClientRequestHandler::request_stream | ( | ) | [inline] |
Definition at line 78 of file HTTP_ClientRequestHandler.inl.
{ return this->session_ ? this->session ()->request_stream (*this) : ACE::IOS::Null::out_stream_; }
const Response & ACE::HTTP::ClientRequestHandler::response | ( | ) | const [inline, virtual] |
Definition at line 60 of file HTTP_ClientRequestHandler.inl.
{ return this->response_; }
Response & ACE::HTTP::ClientRequestHandler::response | ( | ) | [inline, virtual] |
Definition at line 54 of file HTTP_ClientRequestHandler.inl.
{ return this->response_; }
std::istream & ACE::HTTP::ClientRequestHandler::response_stream | ( | ) | [inline, virtual] |
Definition at line 86 of file HTTP_ClientRequestHandler.inl.
{ return this->session_ ? this->session ()->response_stream (*this) : ACE::IOS::Null::in_stream_; }
SessionHolder & ACE::HTTP::ClientRequestHandler::session | ( | ) | [inline, protected] |
Definition at line 66 of file HTTP_ClientRequestHandler.inl.
{ return *this->session_; }
void ACE::HTTP::ClientRequestHandler::session | ( | SessionHolder * | session | ) | [inline, protected] |
Definition at line 72 of file HTTP_ClientRequestHandler.inl.
{ this->session_ = session; }
Definition at line 235 of file HTTP_ClientRequestHandler.h.
Definition at line 236 of file HTTP_ClientRequestHandler.h.
Definition at line 237 of file HTTP_ClientRequestHandler.h.