8#ifndef FACEBOOK_NETWORK_PACKAGED_CONNECTIONLESS_SERVER_H
9#define FACEBOOK_NETWORK_PACKAGED_CONNECTIONLESS_SERVER_H
80 inline MessageData(
const Timestamp retireTimestamp,
const size_t size,
const unsigned int remainingPackages);
92 inline unsigned int remainingPackages()
const;
98 inline size_t size()
const;
104 inline const uint8_t* buffer()
const;
110 inline uint8_t* buffer();
116 inline void setRetireTimestamp(
const Timestamp timestamp);
124 inline bool setPackageReceived(
const unsigned int packageIndex);
146 unsigned int remainingPackages_ = 0u;
174 inline const Address4& address()
const;
180 inline const Port& port()
const;
193 inline bool operator<(
const Triple& triple)
const;
204 unsigned int messageId_ = invalidMessageId();
244 double maximalMessageTime_ = 5.0;
254 retireTimestamp_(messageData.retireTimestamp_),
255 remainingPackages_(messageData.remainingPackages_),
256 receivedPackages_(messageData.receivedPackages_),
257 buffer_(messageData.buffer_)
263 retireTimestamp_(messageData.retireTimestamp_),
264 remainingPackages_(messageData.remainingPackages_),
265 receivedPackages_(std::move(messageData.receivedPackages_)),
266 buffer_(std::move(messageData.buffer_))
268 messageData.retireTimestamp_.toInvalid();
269 messageData.remainingPackages_ = 0u;
273 retireTimestamp_(retireTimestamp),
274 remainingPackages_(remainingPackages),
275 receivedPackages_(remainingPackages, 0u),
283 return retireTimestamp_;
288 return remainingPackages_;
308 retireTimestamp_ = timestamp;
314 if (
size_t(packageIndex) >= receivedPackages_.size() || receivedPackages_[packageIndex] != 0u)
319 receivedPackages_[packageIndex] = 1u;
321 ocean_assert(remainingPackages_ >= 1u);
322 --remainingPackages_;
339 if (
this != &messageData)
342 remainingPackages_ = messageData.remainingPackages_;
343 receivedPackages_ = std::move(messageData.receivedPackages_);
344 buffer_ = std::move(messageData.buffer_);
346 messageData.retireTimestamp_.toInvalid();
347 messageData.remainingPackages_ = 0u;
356 messageId_(messageId)
This class wraps an address number with 32 bits.
Definition Address4.h:26
This class is the base class for all packaged connectionless clients.
Definition PackagedConnectionlessClient.h:40
This class implements a message.
Definition PackagedConnectionlessServer.h:54
unsigned int remainingPackages() const
Returns the number of remaining packages.
Definition PackagedConnectionlessServer.h:286
bool setPackageReceived(const unsigned int packageIndex)
Marks one package of this message as received.
Definition PackagedConnectionlessServer.h:311
const uint8_t * buffer() const
Returns the message buffer.
Definition PackagedConnectionlessServer.h:296
Buffer buffer_
The entire buffer of the message.
Definition PackagedConnectionlessServer.h:152
MessageData & operator=(const MessageData &messageData)
Assign operator.
Definition PackagedConnectionlessServer.h:327
void setRetireTimestamp(const Timestamp timestamp)
Sets or changes the retire timestamp.
Definition PackagedConnectionlessServer.h:306
Timestamp retireTimestamp() const
Returns the retire timestamp.
Definition PackagedConnectionlessServer.h:281
Timestamp retireTimestamp_
The timestamp at which this message will be retired as no further packages arrived in the meantime.
Definition PackagedConnectionlessServer.h:143
MessageData()=default
Creates an empty data object.
size_t size() const
Returns the size of the message buffer, in bytes.
Definition PackagedConnectionlessServer.h:291
std::vector< uint8_t > receivedPackages_
The received state of each package of this message.
Definition PackagedConnectionlessServer.h:149
unsigned int remainingPackages_
The number of packages which are still missing.
Definition PackagedConnectionlessServer.h:146
Definition of a triple storing an address, a port and a message id.
Definition PackagedConnectionlessServer.h:159
Triple(const Address4 &address, const Port &port, const MessageId messageId)
Creates a new triple object.
Definition PackagedConnectionlessServer.h:353
bool operator<(const Triple &triple) const
Compares two triple objects.
Definition PackagedConnectionlessServer.h:376
unsigned int messageId_
The message id of this object.
Definition PackagedConnectionlessServer.h:204
const Address4 & address() const
Returns the address of this object.
Definition PackagedConnectionlessServer.h:361
MessageId messageId() const
Returns the message id of this object.
Definition PackagedConnectionlessServer.h:371
const Port & port() const
Returns the port of this object.
Definition PackagedConnectionlessServer.h:366
Address4 address_
The address of this object.
Definition PackagedConnectionlessServer.h:198
Port port_
The port of this object.
Definition PackagedConnectionlessServer.h:201
This class is the base class for all package connectionless server.
Definition PackagedConnectionlessServer.h:35
bool onScheduler() override
The scheduler event function.
ReceiveCallback receiveCallback_
Data callback function called on new message arrivals.
Definition PackagedConnectionlessServer.h:241
std::map< Triple, MessageData > MessageMap
Definition of a map mapping message ids to massage data objects.
Definition PackagedConnectionlessServer.h:210
~PackagedConnectionlessServer() override
Destructs a connectionless server object.
void setReceiveCallback(const ReceiveCallback &callback)
Sets the receive data callback function.
Definition PackagedConnectionlessServer.h:381
MessageMap connectionlessServerMessageMap
The map holding all partially received message.
Definition PackagedConnectionlessServer.h:250
Buffer packageBuffer_
Intermediate buffer storing individual parts of a large message.
Definition PackagedConnectionlessServer.h:247
PackagedConnectionlessServer()
Creates a new connectionless server object.
uint32_t MessageId
Definition of a message id.
Definition PackagedSocket.h:215
This class wraps a port number with 16 bits.
Definition Port.h:26
This class is the base class for all server.
Definition Server.h:26
Buffer buffer_
The socket buffer of this server.
Definition Server.h:57
Address4 address() const
Returns the own address of this socket.
std::vector< uint8_t > Buffer
Definition of a vector holding 8 bit values.
Definition Socket.h:76
Port port() const
Returns the own port of this socket.
Lock lock_
Socket lock.
Definition Socket.h:187
This class implements a scoped lock object for recursive lock objects.
Definition Lock.h:147
This class implements a timestamp.
Definition Timestamp.h:64
The namespace covering the entire Ocean framework.
Definition Accessor.h:15