Async 1.8.0
|
A class representing a HTTP server side connection. More...
#include <AsyncHttpServerConnection.h>
Classes | |
struct | Request |
class | Response |
Public Types | |
typedef std::map< std::string, std::string > | Headers |
![]() | |
enum | DisconnectReason { DR_HOST_NOT_FOUND , DR_REMOTE_DISCONNECTED , DR_SYSTEM_ERROR , DR_ORDERED_DISCONNECT , DR_PROTOCOL_ERROR , DR_SWITCH_PEER , DR_BAD_STATE } |
Reason code for disconnects. More... | |
Public Member Functions | |
HttpServerConnection (size_t recv_buf_len=DEFAULT_RECV_BUF_LEN) | |
Constructor. | |
HttpServerConnection (int sock, const IpAddress &remote_addr, uint16_t remote_port, size_t recv_buf_len=DEFAULT_RECV_BUF_LEN) | |
Constructor. | |
virtual | ~HttpServerConnection (void) |
Destructor. | |
virtual TcpConnection & | operator= (TcpConnection &&other_base) override |
Move assignmnt operator. | |
void | setChunked (void) |
Send data with chunked transfer encoding. | |
virtual bool | write (const Response &res) |
Send a HTTP response. | |
virtual bool | write (const char *buf, int len) |
Write data to the socket. | |
![]() | |
TcpConnection (size_t recv_buf_len=DEFAULT_RECV_BUF_LEN) | |
Constructor. | |
TcpConnection (int sock, const IpAddress &remote_addr, uint16_t remote_port, size_t recv_buf_len=DEFAULT_RECV_BUF_LEN) | |
Constructor. | |
virtual | ~TcpConnection (void) |
Destructor. | |
void | setRecvBufLen (size_t recv_buf_len) |
Set a new receive buffer size. | |
size_t | recvBufLen (void) const |
virtual void | disconnect (void) |
Disconnect from the remote host. | |
IpAddress | localHost (void) const |
Get the local IP address associated with this connection. | |
uint16_t | localPort (void) const |
Get the local TCP port associated with this connection. | |
const IpAddress & | remoteHost (void) const |
Return the IP-address of the remote host. | |
uint16_t | remotePort (void) const |
Return the remote port used. | |
bool | isConnected (void) const |
Check if the connection is established or not. | |
bool | isIdle (void) const |
Check if the connection is idle. | |
void | enableSsl (bool enable) |
Enable or disable TLS for this connection. | |
SslX509 | sslPeerCertificate (void) |
Get the peer certificate associated with this connection. | |
Async::SslX509 | sslCertificate (void) const |
long | sslVerifyResult (void) const |
Get the result of the certificate verification process. | |
void | setSslContext (SslContext &ctx, bool is_server) |
Set the OpenSSL context to use when setting up the connection. | |
SslContext * | sslContext (void) |
bool | isServer (void) const |
void | freeze (void) |
Stop all communication. | |
void | unfreeze (void) |
Reenable all communication. | |
Public Attributes | |
sigc::signal< void, HttpServerConnection *, DisconnectReason > | disconnected |
A signal that is emitted when a connection has been terminated. | |
sigc::signal< void, HttpServerConnection *, Request & > | requestReceived |
A signal that is emitted when a HTTP request has been received on the connection. | |
![]() | |
sigc::signal< void, TcpConnection *, DisconnectReason > | disconnected |
Get common name for the SSL connection. | |
sigc::signal< int, TcpConnection *, void *, int > | dataReceived |
A signal that is emitted when data has been received on the connection. | |
sigc::signal< if_all_true_acc::result_type, TcpConnection *, int, X509_STORE_CTX * >::accumulated< if_all_true_acc > | verifyPeer |
A signal that is emitted on SSL/TLS certificate verification. | |
sigc::signal< void, TcpConnection * > | sslConnectionReady |
A signal that is emitted when the SSL connection is ready. | |
Protected Member Functions | |
virtual void | closeConnection (void) override |
Disconnect from the remote peer. | |
virtual void | onDisconnected (DisconnectReason reason) override |
Called when a connection has been terminated. | |
virtual int | onDataReceived (void *buf, int count) override |
Called when data has been received on the connection. | |
virtual void | emitDisconnected (DisconnectReason reason) override |
Emit the disconnected signal. | |
![]() | |
void | setSocket (int sock) |
Setup information about the connection. | |
void | setRemoteAddr (const IpAddress &remote_addr) |
Setup information about the connection. | |
void | setRemotePort (uint16_t remote_port) |
Setup information about the connection. | |
int | socket (void) const |
Return the socket file descriptor. | |
virtual int | emitVerifyPeer (int preverify_ok, X509_STORE_CTX *store_ctx) |
Emit the verifyPeer signal. | |
Protected Attributes | |
sigc::signal< void, bool > | sendBufferFull |
Additional Inherited Members | |
![]() | |
static const char * | disconnectReasonStr (DisconnectReason reason) |
Translate disconnect reason to a string. | |
![]() | |
static const int | DEFAULT_RECV_BUF_LEN = 1024 |
The default size of the reception buffer. | |
A class representing a HTTP server side connection.
This class implement a VERY simple HTTP server side connection. It can be used together with the Async::TcpServer class to build a HTTP server.
WARNING: This implementation is not suitable to be exposed to the public Internet. It contains a number of security flaws and probably also incompatibilities. Only use this class with known clients.
Definition at line 129 of file AsyncHttpServerConnection.h.
std::map<std::string, std::string> Async::HttpServerConnection::Headers |
Definition at line 132 of file AsyncHttpServerConnection.h.
|
explicit |
Constructor.
recv_buf_len | The length of the receiver buffer to use |
Async::HttpServerConnection::HttpServerConnection | ( | int | sock, |
const IpAddress & | remote_addr, | ||
uint16_t | remote_port, | ||
size_t | recv_buf_len = DEFAULT_RECV_BUF_LEN ) |
Constructor.
sock | The socket for the connection to handle |
remote_addr | The remote IP-address of the connection |
remote_port | The remote TCP-port of the connection |
recv_buf_len | The length of the receiver buffer to use |
|
virtual |
Destructor.
|
overrideprotectedvirtual |
Disconnect from the remote peer.
This function is used internally to close the connection to the remote peer.
Reimplemented from Async::TcpConnection.
|
inlineoverrideprotectedvirtual |
Emit the disconnected signal.
reason | The reason for the disconnection |
Reimplemented from Async::TcpConnection.
Definition at line 330 of file AsyncHttpServerConnection.h.
References disconnected, and Async::TcpConnection::emitDisconnected().
|
overrideprotectedvirtual |
Called when data has been received on the connection.
buf | A buffer containg the read data |
count | The number of bytes in the buffer |
This function is called when data has been received on this connection. The buffer will contain the bytes read from the operating system. The function will return the number of bytes that has been processed. The bytes not processed will be stored in the receive buffer for this class and presented again to the slot when more data arrives. The new data will be appended to the old data.
Reimplemented from Async::TcpConnection.
|
overrideprotectedvirtual |
Called when a connection has been terminated.
reason | The reason for the disconnect |
This function will be called when the connection has been terminated.
Reimplemented from Async::TcpConnection.
|
overridevirtual |
Move assignmnt operator.
other_base | The object to move from |
The move operator move the state of a specified TcpFramedConnection object into this object. After the move, the state of the other object will be the same as if it had just been default constructed.
Reimplemented from Async::TcpConnection.
|
inline |
Send data with chunked transfer encoding.
Calling this function will enable data to be sent in chunks. The "Transfer-encoding: chunked" will be set in the header and each call to write() will send a chunk.
Definition at line 254 of file AsyncHttpServerConnection.h.
|
virtual |
Write data to the socket.
buf | The buffer containing the data to write |
len | Then length of the data in the buffer |
If chunked mode has been set a chunked header and trailer will be added to the data. If not in chunked mode, the raw buffer will be sent without modification.
|
virtual |
Send a HTTP response.
res | The response ( |
sigc::signal<void, HttpServerConnection *, DisconnectReason> Async::HttpServerConnection::disconnected |
A signal that is emitted when a connection has been terminated.
con | The connection object |
reason | The reason for the disconnect |
Definition at line 280 of file AsyncHttpServerConnection.h.
Referenced by emitDisconnected().
sigc::signal<void, HttpServerConnection *, Request&> Async::HttpServerConnection::requestReceived |
A signal that is emitted when a HTTP request has been received on the connection.
req | The request object ( |
This signal is emitted when a HTTP request has been received on this connection.
Definition at line 290 of file AsyncHttpServerConnection.h.
|
protected |
Definition at line 293 of file AsyncHttpServerConnection.h.