# NetworkHTTPSocketHandler Class Reference

Base socket handler for HTTP traffic. More...

`#include <tcp_http.h>`

Inheritance diagram for NetworkHTTPSocketHandler:

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

## Detailed Description

Base socket handler for HTTP traffic.

Definition at line 42 of file tcp_http.h.

## Constructor & Destructor Documentation

NetworkHTTPSocketHandler::NetworkHTTPSocketHandler | ( | SOCKET | sock,
|  | 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 27 of file tcp_http.cpp.

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

NetworkHTTPSocketHandler::~NetworkHTTPSocketHandler | ( |  | ) |

Free whatever needs to be freed.

Definition at line 60 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 69 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 178 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 occured. Downloading failed.

Note:
  if an error occured the header might not be in its original state. No effort is undertaken to bring the header in its original state.

Definition at line 98 of file tcp_http.cpp.

References callback, Connect(), CONTENT_LENGTH, data, 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 213 of file tcp_http.cpp.

References callback, 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:

- src/network/core/tcp_http.h
- src/network/core/tcp_http.cpp