NetworkHTTPSocketHandler Class Reference

Base socket handler for HTTP traffic. More...

#include <tcp_http.h>

Inheritance diagram for NetworkHTTPSocketHandler:
NetworkSocketHandler

Public Member Functions

bool IsConnected () const
 Whether this socket is currently bound to a socket.
virtual NetworkRecvStatus CloseConnection (bool error=true)
 Close the current connection; for TCP this will be mostly equivalent to Close(), but for UDP it just means the packet has to be dropped.
 NetworkHTTPSocketHandler (SOCKET sock, HTTPCallback *callback, const char *host, const char *url, const char *data, int depth)
 Start the querying.
 ~NetworkHTTPSocketHandler ()
 Free whatever needs to be freed.

Static Public Member Functions

static int Connect (char *uri, HTTPCallback *callback, const char *data=NULL, int depth=0)
 Connect to the given URI.
static void HTTPReceive ()
 Do the receiving for all HTTP connections.

Data Fields

SOCKET sock
 The socket currently connected to.

Private Member Functions

int HandleHeader ()
 Handle the header of a HTTP reply.
int Receive ()
 Handle receiving of HTTP data.

Private Attributes

char recv_buffer [4096]
 Partially received message.
int recv_pos
 Current position in buffer.
int recv_length
 Length of the data still retrieving.
HTTPCallbackcallback
 The callback to call for the incoming data.
const char * data
 The (POST) data we might want to forward (to a redirect).
int redirect_depth
 The depth of the redirection.

Detailed Description

Base socket handler for HTTP traffic.

Definition at line 42 of file tcp_http.h.


Constructor & Destructor Documentation

NetworkHTTPSocketHandler::NetworkHTTPSocketHandler ( SOCKET  s,
HTTPCallback callback,
const char *  host,
const char *  url,
const char *  data,
int  depth 
)

Start the querying.

Parameters:
sock the socket of this connection
callback the callback for HTTP retrieval
url the url at the server
data the data to send
depth the depth (redirect recursion) of the queries

Definition at line 34 of file tcp_http.cpp.

References AllocaM, SmallVector< T, S >::Append(), DEBUG, HTTPCallback::OnFailure(), seprintf(), and sock.

NetworkHTTPSocketHandler::~NetworkHTTPSocketHandler (  ) 

Free whatever needs to be freed.

Definition at line 69 of file tcp_http.cpp.

References CloseConnection(), data, and sock.


Member Function Documentation

NetworkRecvStatus NetworkHTTPSocketHandler::CloseConnection ( bool  error = true  )  [virtual]

Close the current connection; for TCP this will be mostly equivalent to Close(), but for UDP it just means the packet has to be dropped.

Parameters:
error Whether we quit under an error condition or not.
Returns:
new status of the connection.

Reimplemented from NetworkSocketHandler.

Definition at line 78 of file tcp_http.cpp.

References NETWORK_RECV_STATUS_OKAY.

Referenced by HTTPReceive(), and ~NetworkHTTPSocketHandler().

int NetworkHTTPSocketHandler::Connect ( char *  uri,
HTTPCallback callback,
const char *  data = NULL,
int  depth = 0 
) [static]

Connect to the given URI.

Parameters:
uri the URI to connect to.
callback the callback to send data back on.
data the data we want to send (as POST).
depth the recursion/redirect depth.

Definition at line 194 of file tcp_http.cpp.

References ParseConnectionString(), and return_error.

Referenced by HandleHeader().

int NetworkHTTPSocketHandler::HandleHeader (  )  [private]

Handle the header of a HTTP reply.

Returns:
amount of data to continue downloading. > 0: we need to download N bytes. = 0: we're being redirected. < 0: an error occurred. Downloading failed.
Note:
if an error occurred the header might not be in its original state. No effort is undertaken to bring the header in its original state.

Definition at line 107 of file tcp_http.cpp.

References callback, Connect(), CONTENT_LENGTH, data, DEBUG, END_OF_HEADER, HTTP_1_0, HTTP_1_1, LOCATION, NEWLINE, recv_buffer, redirect_depth, and return_error.

Referenced by Receive().

bool NetworkHTTPSocketHandler::IsConnected (  )  const [inline]

Whether this socket is currently bound to a socket.

Returns:
true when the socket is bound, false otherwise

Definition at line 60 of file tcp_http.h.

References sock.

int NetworkHTTPSocketHandler::Receive (  )  [private]

Handle receiving of HTTP data.

Returns:
state of the receival of HTTP data. > 0: we need more cycles for downloading = 0: we are done downloading < 0: we have hit an error

Definition at line 229 of file tcp_http.cpp.

References callback, DEBUG, END_OF_HEADER, HandleHeader(), lengthof, min(), HTTPCallback::OnReceiveData(), recv_buffer, recv_length, recv_pos, and sock.

Referenced by HTTPReceive().


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

Generated on Thu Apr 14 00:49:12 2011 for OpenTTD by  doxygen 1.6.1