|
Ocean
|
This class is the base class for all package connectionless server. More...
#include <PackagedConnectionlessServer.h>
Data Structures | |
| class | MessageData |
| This class implements a message. More... | |
| class | Triple |
| Definition of a triple storing an address, a port and a message id. More... | |
Public Types | |
| using | ReceiveCallback = Callback< void, const Address4 &, const Port &, const void *, const size_t, const MessageId > |
| Definition of a data callback function. | |
Public Types inherited from Ocean::Network::Socket | |
| enum | SocketResult { SR_SUCCEEDED = 0 , SR_FAILED , SR_BUSY , SR_NOT_CONNECTED } |
| Definition of individual result values. More... | |
| using | SocketId = SOCKET |
| Definition of a socket id. | |
| using | SocketId = int |
| Definition of a socket id. | |
| using | Buffer = std::vector< uint8_t > |
| Definition of a vector holding 8 bit values. | |
Public Types inherited from Ocean::Network::PackagedSocket | |
| using | MessageId = uint32_t |
| Definition of a message id. | |
Public Member Functions | |
| ~PackagedConnectionlessServer () override | |
| Destructs a connectionless server object. | |
| void | setReceiveCallback (const ReceiveCallback &callback) |
| Sets the receive data callback function. | |
Public Member Functions inherited from Ocean::Network::PackagedConnectionlessClient | |
| SocketResult | send (const Address4 &address, const Port &port, const void *data, const size_t size) |
| Sends data to a specified recipient. | |
| SocketResult | send (const Address4 &address, const Port &port, const std::string &message) |
| Sends a message to a specified recipient. | |
| size_t | maximalPackageSize () const |
| Returns the maximal size of a single package for this client. | |
Public Member Functions inherited from Ocean::Network::Socket | |
| virtual | ~Socket () |
| Destructs a socket object. | |
| SocketId | id () const |
| Returns the socket id. | |
| Address4 | address () const |
| Returns the own address of this socket. | |
| Port | port () const |
| Returns the own port of this socket. | |
| virtual bool | setAddress (const Address4 &address) |
| Sets the own address of this socket. | |
| virtual bool | setPort (const Port &port) |
| Sets the own port of this socket. | |
| operator bool () const | |
| Returns whether this socket is valid. | |
Public Member Functions inherited from Ocean::Network::Server | |
| ~Server () override | |
| Destructs a server object. | |
| virtual bool | start () |
| Starts the server. | |
| virtual bool | stop () |
| Stops the server. | |
Protected Types | |
| using | MessageMap = std::map< Triple, MessageData > |
| Definition of a map mapping message ids to massage data objects. | |
Protected Types inherited from Ocean::Network::PackagedSocket | |
| using | MemoryBlockQueue = std::queue< MemoryBlock > |
| Definition of a queue holding memory blocks. | |
Protected Member Functions | |
| PackagedConnectionlessServer () | |
| Creates a new connectionless server object. | |
| bool | onScheduler () override |
| The scheduler event function. | |
Protected Member Functions inherited from Ocean::Network::PackagedConnectionlessClient | |
| PackagedConnectionlessClient () | |
| Creates a new packaged connectionless client object. | |
| ~PackagedConnectionlessClient () override | |
| Destructs a packaged connectionless client object. | |
Protected Member Functions inherited from Ocean::Network::Client | |
| Client () | |
| Creates a new client. | |
| ~Client () override | |
| Destructs a client. | |
Protected Member Functions inherited from Ocean::Network::Socket | |
| Socket () | |
| Creates a new socket object. | |
| Socket (const Socket &object)=delete | |
| Disabled copy constructor. | |
| bool | setBlockingMode (const bool blocking) |
| Sets the blocking mode of this socket. | |
| size_t | maximalMessageSize (const size_t defaultSize=65536) |
| Returns the maximal message size in bytes. | |
| bool | releaseSocket () |
| Releases the socket. | |
| Socket & | operator= (const Socket &object)=delete |
| Disabled copy operator. | |
Protected Member Functions inherited from Ocean::Network::PackagedSocket | |
| PackagedSocket () | |
| Creates a new packaged socket. | |
Protected Member Functions inherited from Ocean::Network::Server | |
| Server () | |
| Creates a new server object. | |
Protected Attributes | |
| ReceiveCallback | receiveCallback_ |
| Data callback function called on new message arrivals. | |
| double | maximalMessageTime_ = 5.0 |
| The time between the first package of a large message and the decision to retire the message if still packages are missing, in seconds. | |
| Buffer | packageBuffer_ |
| Intermediate buffer storing individual parts of a large message. | |
| MessageMap | connectionlessServerMessageMap |
| The map holding all partially received message. | |
Protected Attributes inherited from Ocean::Network::PackagedConnectionlessClient | |
| MessageId | messageCounter_ = 0u |
| Client message counter. | |
| size_t | maximalPackageSize_ = 0 |
| Maximal package size of this connectionless socket (including the header). | |
| Buffer | clientPackageBuffer_ |
| Intermediate buffer storing individual parts of a large message. | |
Protected Attributes inherited from Ocean::Network::Client | |
| Buffer | socketBuffer_ |
| The socket buffer of this client. | |
Protected Attributes inherited from Ocean::Network::Socket | |
| SocketId | socketId_ = invalidSocketId() |
| Socket id. | |
| Lock | lock_ |
| Socket lock. | |
| NetworkResource | networkResource_ |
| The network resource object. | |
Protected Attributes inherited from Ocean::Network::Server | |
| Buffer | buffer_ |
| The socket buffer of this server. | |
| bool | schedulerIsActive_ = false |
| True, if the server scheduler is active. | |
Additional Inherited Members | |
Static Public Member Functions inherited from Ocean::Network::Socket | |
| static constexpr SocketId | invalidSocketId () |
| Returns an invalid socket id. | |
| static bool | setBlockingMode (const SocketId socketId, const bool blocking) |
| Sets the blocking mode of a socket. | |
Static Public Member Functions inherited from Ocean::Network::PackagedSocket | |
| static constexpr MessageId | invalidMessageId () |
| Returns an invalid message id. | |
| static constexpr size_t | packageManagmentHeaderSize () |
| Returns the size of the package management header in bytes. | |
| static constexpr size_t | maximalPackagedMessageSize () |
| Returns the maximal size of a packaged message. | |
Static Protected Member Functions inherited from Ocean::Network::PackagedSocket | |
| static bool | extractNextPackage (MemoryBlockQueue &sourceQueue, MemoryBlock &targetMemory) |
| Extracts a memory block from a queue with memory block. | |
This class is the base class for all package connectionless server.
The server reassembles the datagrams a PackagedConnectionlessClient produced, see PackagedSocket::packageManagmentHeaderSize() for the layout. A message is identified by (sender address, sender port, message id), and its buffer is sized from the first datagram that arrives. The receive callback is invoked once every fragment has been seen, an incomplete message is dropped after maximalMessageTime_ seconds. Because UDP neither guarantees order nor delivery, a message may never complete, and datagrams of different messages may interleave.
|
protected |
Definition of a map mapping message ids to massage data objects.
| using Ocean::Network::PackagedConnectionlessServer::ReceiveCallback = Callback<void, const Address4&, const Port&, const void*, const size_t, const MessageId> |
Definition of a data callback function.
Parameter 0 provides the address of the sender.
Parameter 1 provides the port of the sender.
Parameter 2 provides the received buffer, which must be copied, nullptr if the message could not be delivered correctly Parameter 3 provides the size of the received buffer, in bytes; 0 if the message could not be delivered correctly Parameter 4 provides the id of the message to which the received buffer belongs
|
override |
Destructs a connectionless server object.
|
protected |
Creates a new connectionless server object.
|
overrideprotectedvirtual |
|
inline |
Sets the receive data callback function.
| callback | the callback function to be called if a new message arrives. |
|
protected |
The map holding all partially received message.
|
protected |
The time between the first package of a large message and the decision to retire the message if still packages are missing, in seconds.
|
protected |
Intermediate buffer storing individual parts of a large message.
|
protected |
Data callback function called on new message arrivals.