Async
1.5.0
|
A TCP connection with framed instead of streamed content. More...
#include <AsyncFramedTcpConnection.h>
Public Member Functions | |
FramedTcpConnection (size_t recv_buf_len=DEFAULT_RECV_BUF_LEN) | |
Constructor. More... | |
FramedTcpConnection (int sock, const IpAddress &remote_addr, uint16_t remote_port, size_t recv_buf_len=DEFAULT_RECV_BUF_LEN) | |
Constructor. More... | |
virtual | ~FramedTcpConnection (void) |
Destructor. More... | |
void | setMaxFrameSize (uint32_t frame_size) |
Set the maximum frame size. More... | |
virtual void | disconnect (void) |
Disconnect from the remote host. More... | |
virtual int | write (const void *buf, int count) |
Send a frame on the TCP connection. More... | |
![]() | |
TcpConnection (size_t recv_buf_len=DEFAULT_RECV_BUF_LEN) | |
Constructor. More... | |
TcpConnection (int sock, const IpAddress &remote_addr, uint16_t remote_port, size_t recv_buf_len=DEFAULT_RECV_BUF_LEN) | |
Constructor. More... | |
virtual | ~TcpConnection (void) |
Destructor. More... | |
void | setRecvBufLen (size_t recv_buf_len) |
Set a new receive buffer size. More... | |
const IpAddress & | remoteHost (void) const |
Return the IP-address of the remote host. More... | |
uint16_t | remotePort (void) const |
Return the remote port used. More... | |
bool | isConnected (void) const |
Check if the connection is established or not. More... | |
bool | isIdle (void) const |
Check if the connection is idle. More... | |
Public Attributes | |
sigc::signal< void, FramedTcpConnection *, DisconnectReason > | disconnected |
A signal that is emitted when a connection has been terminated. More... | |
sigc::signal< void, FramedTcpConnection *, std::vector< uint8_t > & > | frameReceived |
A signal that is emitted when a frame has been received on the connection. More... | |
![]() | |
sigc::signal< void, TcpConnection *, DisconnectReason > | disconnected |
A signal that is emitted when a connection has been terminated. More... | |
sigc::signal< int, TcpConnection *, void *, int > | dataReceived |
A signal that is emitted when data has been received on the connection. More... | |
sigc::signal< void, bool > | sendBufferFull |
A signal that is emitted when the send buffer status changes. More... | |
Protected Member Functions | |
virtual void | onDisconnected (DisconnectReason reason) |
Called when a connection has been terminated. More... | |
virtual int | onDataReceived (void *buf, int count) |
Called when data has been received on the connection. More... | |
![]() | |
void | setSocket (int sock) |
Setup information about the connection. More... | |
void | setRemoteAddr (const IpAddress &remote_addr) |
Setup information about the connection. More... | |
void | setRemotePort (uint16_t remote_port) |
Setup information about the connection. More... | |
int | socket (void) const |
Return the socket file descriptor. More... | |
Protected Attributes | |
sigc::signal< int, FramedTcpConnection *, void *, int > | dataReceived |
sigc::signal< void, bool > | sendBufferFull |
Additional Inherited Members | |
![]() | |
enum | DisconnectReason { DR_HOST_NOT_FOUND, DR_REMOTE_DISCONNECTED, DR_SYSTEM_ERROR, DR_RECV_BUFFER_OVERFLOW, DR_ORDERED_DISCONNECT, DR_PROTOCOL_ERROR } |
Reason code for disconnects. More... | |
![]() | |
static const char * | disconnectReasonStr (DisconnectReason reason) |
Translate disconnect reason to a string. More... | |
![]() | |
static const int | DEFAULT_RECV_BUF_LEN = 1024 |
The default length of the reception buffer. More... | |
A TCP connection with framed instead of streamed content.
This class implements a framed TCP connection. It will make sure that the data given to one call to the write function will arrive at the other end in one piece or not at all. This makes it easier to implement message based protocols that only want to see completely transfered messages at the other end.
Definition at line 131 of file AsyncFramedTcpConnection.h.
|
explicit |
Constructor.
recv_buf_len | The length of the receiver buffer to use |
Async::FramedTcpConnection::FramedTcpConnection | ( | 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.
|
virtual |
Disconnect from the remote host.
Call this function to disconnect from the remote host. If already disconnected, nothing will be done. The disconnected signal is not emitted when this function is called
Reimplemented from Async::TcpConnection.
|
protectedvirtual |
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. The default action for this function is to emit the dataReceived signal.
Reimplemented from Async::TcpConnection.
|
protectedvirtual |
Called when a connection has been terminated.
reason | The reason for the disconnect |
This function will be called when the connection has been terminated. The default action for this function is to emit the disconnected signal.
Reimplemented from Async::TcpConnection.
|
inline |
Set the maximum frame size.
frame_size | The maximum frame size in bytes |
Use this function to set the maximum allowed frame size. If a frame size number larger than this is received a disconnection is immediately issued. The default maximum frame size is DEFAULT_MAX_FRAME_SIZE.
Definition at line 164 of file AsyncFramedTcpConnection.h.
|
virtual |
Send a frame on the TCP connection.
buf | The buffer containing the frame to send |
count | The number of bytes in the frame |
This function will send a frame of data on the TCP connection. The frame will either be completely transmitted or discarded on error. There is no inbetween so this function will always return either the given count or -1 on error.
Reimplemented from Async::TcpConnection.
|
protected |
Definition at line 207 of file AsyncFramedTcpConnection.h.
sigc::signal<void, FramedTcpConnection *, DisconnectReason> Async::FramedTcpConnection::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 193 of file AsyncFramedTcpConnection.h.
sigc::signal<void, FramedTcpConnection *, std::vector<uint8_t>&> Async::FramedTcpConnection::frameReceived |
A signal that is emitted when a frame has been received on the connection.
buf | A buffer containg the read data |
count | The number of bytes in the buffer |
This signal is emitted when a frame has been received on this connection.
Definition at line 204 of file AsyncFramedTcpConnection.h.
|
protected |
Definition at line 208 of file AsyncFramedTcpConnection.h.