Base socket handler for HTTP traffic. More...
#include <tcp_http.h>
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. | |
HTTPCallback * | callback |
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. |
Base socket handler for HTTP traffic.
Definition at line 42 of file tcp_http.h.
NetworkHTTPSocketHandler::NetworkHTTPSocketHandler | ( | SOCKET | s, | |
HTTPCallback * | callback, | |||
const char * | host, | |||
const char * | url, | |||
const char * | data, | |||
int | depth | |||
) |
Start the querying.
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.
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.
error | Whether we quit under an error condition or not. |
Reimplemented from NetworkSocketHandler.
Definition at line 78 of file tcp_http.cpp.
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.
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.
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.
Definition at line 60 of file tcp_http.h.
References sock.
int NetworkHTTPSocketHandler::Receive | ( | ) | [private] |
Handle receiving of HTTP data.
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().