#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.
1.7.0