OpenTTD Source  12.0-beta2
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. More...
 
void CloseSocket ()
 Close the actual socket of the connection.
 
 NetworkHTTPSocketHandler (SOCKET sock, HTTPCallback *callback, const std::string &host, const char *url, const char *data, int depth)
 Start the querying. More...
 
 ~NetworkHTTPSocketHandler ()
 Free whatever needs to be freed.
 
- Public Member Functions inherited from NetworkSocketHandler
 NetworkSocketHandler ()
 Create a new unbound socket.
 
virtual ~NetworkSocketHandler ()
 Close the socket when destructing the socket handler.
 
void MarkClosed ()
 Mark the connection as closed. More...
 
bool HasClientQuit () const
 Whether the current client connected to the socket has quit. More...
 
void Reopen ()
 Reopen the socket so we can send/receive stuff again.
 

Static Public Member Functions

static int Connect (char *uri, HTTPCallback *callback, const char *data=nullptr, int depth=0)
 Connect to the given URI. More...
 
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. More...
 
int Receive ()
 Handle receiving of HTTP data. More...
 

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 38 of file tcp_http.h.

Constructor & Destructor Documentation

◆ NetworkHTTPSocketHandler()

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

Start the querying.

Parameters
sthe socket of this connection
callbackthe callback for HTTP retrieval
hostthe hostname of the server to connect to
urlthe url at the server
datathe data to send
depththe depth (redirect recursion) of the queries

Definition at line 34 of file tcp_http.cpp.

References _http_connections, data, Debug, GetNetworkRevisionString(), HTTPCallback::OnFailure(), and sock.

Member Function Documentation

◆ Connect()

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

Connect to the given URI.

Parameters
urithe URI to connect to.
callbackthe callback to send data back on.
datathe data we want to send (as POST).
depththe recursion/redirect depth.

Definition at line 192 of file tcp_http.cpp.

References callback, data, and return_error.

Referenced by HandleHeader().

◆ 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 105 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().

◆ IsConnected()

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 56 of file tcp_http.h.

◆ Receive()

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 221 of file tcp_http.cpp.

References NetworkError::AsString(), callback, Debug, END_OF_HEADER, NetworkError::GetLast(), HandleHeader(), NetworkError::IsConnectionReset(), lengthof, HTTPCallback::OnReceiveData(), recv_buffer, recv_length, recv_pos, sock, and NetworkError::WouldBlock().

Referenced by HTTPReceive().


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