TDME2 1.9.121
Classes | Private Types | Private Member Functions | Private Attributes | Static Private Attributes | Friends | List of all members
UDPServerIOThread Class Reference

UDP Network server IO thread. More...

#include <tdme/network/udpserver/UDPServerIOThread.h>

Inheritance diagram for UDPServerIOThread:
Inheritance graph
Collaboration diagram for UDPServerIOThread:
Collaboration graph

Classes

struct  Message
 

Private Types

typedef queue< Message * > MessageQueue
 
typedef map< uint32_t, Message * > MessageMapAck
 

Private Member Functions

 UDPServerIOThread (const unsigned int id, UDPServer *server, const unsigned int maxCCU)
 public constructor should be called in TCPServer More...
 
virtual void run ()
 thread program More...
 
void sendMessage (const UDPServerClient *client, const uint8_t messageType, const uint32_t messageId, stringstream *frame, const bool safe, const bool deleteFrame)
 pushes a message to be send, takes over ownership of frame More...
 
void processAckReceived (UDPServerClient *client, const uint32_t messageId)
 Processes an acknowlegdement reception. More...
 
void processAckMessages ()
 Clean up timed out safe messages, reissue messages not beeing acknowlegded from client. More...
 
- Private Member Functions inherited from Thread
 Thread (const string &name, size_t stackSize=2 *1024 *1024)
 Public constructor. More...
 
virtual ~Thread ()
 Public destructor. More...
 
void join ()
 Blocks caller thread until this thread has been terminated. More...
 
void start ()
 Starts this objects thread. More...
 
virtual void run ()=0
 Abstract run() method, should be implemented by subclassed class, will be called after spawn by start() More...
 
void stop ()
 Requests that this thread should be stopped. More...
 
bool isStopRequested ()
 Returns if stop has been requested. More...
 

Private Attributes

unsigned int id
 
UDPServerserver
 
unsigned int maxCCU
 
KernelEventMechanism kem
 
Mutex messageQueueMutex
 
MessageQueue messageQueue
 
Mutex messageMapAckMutex
 
MessageMapAck messageMapAck
 
UDPSocket socket
 

Static Private Attributes

static const int MESSAGEACK_RESENDTIMES_TRIES = 7
 
static const uint64_t MESSAGEACK_RESENDTIMES [MESSAGEACK_RESENDTIMES_TRIES] = {125L, 250L, 500L, 750L, 1000L, 2000L, 5000L}
 
static const int MESSAGEQUEUE_SEND_BATCH_SIZE = 100
 
static const uint64_t MESSAGEACK_KEEPTIME = 5000L
 

Friends

class UDPServer
 
class UDPServerClient
 

Additional Inherited Members

- Static Private Member Functions inherited from Thread
static int getHardwareThreadCount ()
 
static void sleep (const uint64_t milliseconds)
 sleeps current thread for given time in milliseconds More...
 

Detailed Description

UDP Network server IO thread.

Author
Andreas Drewke

Definition at line 34 of file UDPServerIOThread.h.

Member Typedef Documentation

◆ MessageMapAck

typedef map<uint32_t, Message*> MessageMapAck
private

Definition at line 55 of file UDPServerIOThread.h.

◆ MessageQueue

typedef queue<Message*> MessageQueue
private

Definition at line 54 of file UDPServerIOThread.h.

Constructor & Destructor Documentation

◆ UDPServerIOThread()

UDPServerIOThread ( const unsigned int  id,
UDPServer server,
const unsigned int  maxCCU 
)
private

public constructor should be called in TCPServer

Parameters
idid
*serverserver
maxCCUmax ccu

Definition at line 44 of file UDPServerIOThread.cpp.

Member Function Documentation

◆ processAckMessages()

void processAckMessages ( )
private

Clean up timed out safe messages, reissue messages not beeing acknowlegded from client.

Definition at line 418 of file UDPServerIOThread.cpp.

◆ processAckReceived()

void processAckReceived ( UDPServerClient client,
const uint32_t  messageId 
)
private

Processes an acknowlegdement reception.

Parameters
clientclient
messageIdmessage id
Exceptions
tdme::network::udpserver::NetworkServerException

Definition at line 388 of file UDPServerIOThread.cpp.

◆ run()

void run ( )
privatevirtual

thread program

Implements Thread.

Definition at line 54 of file UDPServerIOThread.cpp.

◆ sendMessage()

void sendMessage ( const UDPServerClient client,
const uint8_t  messageType,
const uint32_t  messageId,
stringstream *  frame,
const bool  safe,
const bool  deleteFrame 
)
private

pushes a message to be send, takes over ownership of frame

Parameters
clientclient
messageTypemessage type
messageIdmessage id
frameframe to be send
safesafe, requires ack and retransmission
deleteFramedelete frame
Exceptions
tdme::network::udpserver::NetworkServerException

Definition at line 313 of file UDPServerIOThread.cpp.

Friends And Related Function Documentation

◆ UDPServer

friend class UDPServer
friend

Definition at line 35 of file UDPServerIOThread.h.

◆ UDPServerClient

friend class UDPServerClient
friend

Definition at line 36 of file UDPServerIOThread.h.

Member Data Documentation

◆ id

unsigned int id
private

Definition at line 96 of file UDPServerIOThread.h.

◆ kem

KernelEventMechanism kem
private

Definition at line 99 of file UDPServerIOThread.h.

◆ maxCCU

unsigned int maxCCU
private

Definition at line 98 of file UDPServerIOThread.h.

◆ MESSAGEACK_KEEPTIME

const uint64_t MESSAGEACK_KEEPTIME = 5000L
staticprivate

Definition at line 42 of file UDPServerIOThread.h.

◆ MESSAGEACK_RESENDTIMES

const uint64_t MESSAGEACK_RESENDTIMES = {125L, 250L, 500L, 750L, 1000L, 2000L, 5000L}
staticprivate

Definition at line 40 of file UDPServerIOThread.h.

◆ MESSAGEACK_RESENDTIMES_TRIES

const int MESSAGEACK_RESENDTIMES_TRIES = 7
staticprivate

Definition at line 39 of file UDPServerIOThread.h.

◆ messageMapAck

MessageMapAck messageMapAck
private

Definition at line 105 of file UDPServerIOThread.h.

◆ messageMapAckMutex

Mutex messageMapAckMutex
private

Definition at line 104 of file UDPServerIOThread.h.

◆ messageQueue

MessageQueue messageQueue
private

Definition at line 102 of file UDPServerIOThread.h.

◆ MESSAGEQUEUE_SEND_BATCH_SIZE

const int MESSAGEQUEUE_SEND_BATCH_SIZE = 100
staticprivate

Definition at line 41 of file UDPServerIOThread.h.

◆ messageQueueMutex

Mutex messageQueueMutex
private

Definition at line 101 of file UDPServerIOThread.h.

◆ server

UDPServer* server
private

Definition at line 97 of file UDPServerIOThread.h.

◆ socket

UDPSocket socket
private

Definition at line 107 of file UDPServerIOThread.h.


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