Protocols::Http::SingleHostClientHttpSession Class Reference

#include <SingleHostClientHttpSession.h> [code]

Inherits Protocols::Http::ClientHttpSession, and Protocols::Generics::SessionStatus.

Inherited by Protocols::Http::CompositeSingleHostClientHttpSession.

Inheritance diagram for Protocols::Http::SingleHostClientHttpSession:

Inheritance graph
[legend]
Collaboration diagram for Protocols::Http::SingleHostClientHttpSession:

Collaboration graph
[legend]
List of all members.

Detailed Description

ClientHttpSession implementation for talking to a single HTTP server.

SingleHostClientHttpSession talks to a single host (HTTP server), a Session to which is passed to the contructor. The SingleHostClientHttpSession object can be used to request resources from different virtual hosts as as long as they are all hosted by the same HTTP server (the one we have a Session with). That is realized by setting the "Host:" header field in the request message header.

Todo:
Allow queuing multiple requests - now we can only send one request.
Todo:
We can also have a ProxiedClientHttpSession. The only difference will be that we shall not write the "Host:" header and that we shall request the complete URI together with the host part. Maybe we should provide a switch in the ctor that determines which kind of request to send?
Todo:
We can also implement a MultiHostClientHttpSession class. It could be implemented in terms of SingleHostClientHttpSession. It can be configured to use multiple SingleHostClientHttpSession objects per host and also talk to numerous hosts at the same time. The HttpDownloadManager could then use the MultiHostClientHttpSession for the HTTP tranfers and the manager would only need to take care of storing the download list, starting/stoping transfers, associating transfers with local files.

Definition at line 61 of file SingleHostClientHttpSession.h.

Public Member Functions

 SingleHostClientHttpSession (ClientHttpSessionStatus *, Session *)
 ~SingleHostClientHttpSession ()
void open ()
 Enables reading and writing of raw data.
void close ()
void abort ()
void get (const Uri &uri, File *outFile)
void sessionReceivedData (Session *, const Data &)
void sessionSendingData (Session *, const Data &)
void sessionClosing (Session *)
 Notification sent when Session::close() is called.
void sessionClosed (Session *)
 Notification sent when the Session is completely closed.

Static Public Member Functions

static RequestHeader createRequestHeader (const QByteArray &method, const Uri &uri)

Private Member Functions

CALITKO_TESTABLE SingleHostClientHttpSession (const SingleHostClientHttpSession &)
SingleHostClientHttpSessionoperator= (const SingleHostClientHttpSession &)
void received (const ResponseHeader &)
void received (const RawData &)
void received (const BodyEnd &)
void received (const DataBase &)

Static Private Member Functions

static QByteArray requestUri (const Uri &uri)
static QByteArray host (const Uri &uri)

Private Attributes

ClientHttpSessionStatusstatus_
Sessionsession_
ObjectDispatcher< DataBasereceivedDataDispatcher_
FileoutFile_


Constructor & Destructor Documentation

CALITKO_TESTABLE Protocols::Http::SingleHostClientHttpSession::SingleHostClientHttpSession const SingleHostClientHttpSession  )  [private]
 

SingleHostClientHttpSession::SingleHostClientHttpSession ClientHttpSessionStatus ,
Session
 

Definition at line 31 of file SingleHostClientHttpSession.cpp.

SingleHostClientHttpSession::~SingleHostClientHttpSession  ) 
 

Definition at line 54 of file SingleHostClientHttpSession.cpp.


Member Function Documentation

void SingleHostClientHttpSession::abort  )  [virtual]
 

Implements Protocols::Http::ClientHttpSession.

Definition at line 72 of file SingleHostClientHttpSession.cpp.

void SingleHostClientHttpSession::close  )  [virtual]
 

Implements Protocols::Http::ClientHttpSession.

Definition at line 67 of file SingleHostClientHttpSession.cpp.

RequestHeader SingleHostClientHttpSession::createRequestHeader const QByteArray &  method,
const Uri uri
[static]
 

Definition at line 87 of file SingleHostClientHttpSession.cpp.

void SingleHostClientHttpSession::get const Uri uri,
File outFile
[virtual]
 

Implements Protocols::Http::ClientHttpSession.

Definition at line 77 of file SingleHostClientHttpSession.cpp.

QByteArray SingleHostClientHttpSession::host const Uri uri  )  [static, private]
 

Definition at line 103 of file SingleHostClientHttpSession.cpp.

void SingleHostClientHttpSession::open  )  [virtual]
 

Enables reading and writing of raw data.

Todo:
test it, check state invariants

Implements Protocols::Http::ClientHttpSession.

Definition at line 62 of file SingleHostClientHttpSession.cpp.

SingleHostClientHttpSession& Protocols::Http::SingleHostClientHttpSession::operator= const SingleHostClientHttpSession  )  [private]
 

void SingleHostClientHttpSession::received const DataBase  )  [private]
 

Definition at line 131 of file SingleHostClientHttpSession.cpp.

void SingleHostClientHttpSession::received const BodyEnd  )  [private]
 

Definition at line 126 of file SingleHostClientHttpSession.cpp.

void SingleHostClientHttpSession::received const RawData  )  [private]
 

Definition at line 120 of file SingleHostClientHttpSession.cpp.

void SingleHostClientHttpSession::received const ResponseHeader  )  [private]
 

Definition at line 115 of file SingleHostClientHttpSession.cpp.

QByteArray SingleHostClientHttpSession::requestUri const Uri uri  )  [static, private]
 

Definition at line 95 of file SingleHostClientHttpSession.cpp.

void SingleHostClientHttpSession::sessionClosed Session  )  [virtual]
 

Notification sent when the Session is completely closed.

Parameters:
session is the Session object sending the notification.

Implements Protocols::Generics::SessionStatus.

Definition at line 147 of file SingleHostClientHttpSession.cpp.

void SingleHostClientHttpSession::sessionClosing Session  )  [virtual]
 

Notification sent when Session::close() is called.

Parameters:
session is the Session object sending the notification.

Implements Protocols::Generics::SessionStatus.

Definition at line 141 of file SingleHostClientHttpSession.cpp.

void SingleHostClientHttpSession::sessionReceivedData Session ,
const Data
 

Definition at line 109 of file SingleHostClientHttpSession.cpp.

void SingleHostClientHttpSession::sessionSendingData Session ,
const Data
 

Definition at line 136 of file SingleHostClientHttpSession.cpp.


Member Data Documentation

File* Protocols::Http::SingleHostClientHttpSession::outFile_ [private]
 

Definition at line 98 of file SingleHostClientHttpSession.h.

ObjectDispatcher<DataBase> Protocols::Http::SingleHostClientHttpSession::receivedDataDispatcher_ [private]
 

Definition at line 97 of file SingleHostClientHttpSession.h.

Session* Protocols::Http::SingleHostClientHttpSession::session_ [private]
 

Definition at line 96 of file SingleHostClientHttpSession.h.

ClientHttpSessionStatus* Protocols::Http::SingleHostClientHttpSession::status_ [private]
 

Definition at line 95 of file SingleHostClientHttpSession.h.


The documentation for this class was generated from the following files: