GlobalObjects
Lade ...
Suche ...
Keine Treffer
tcp::DataReceiver Klassenreferenzabstract

Oberklasse für alle Receiver, welche über ein SOCKET kommunizieren und ihr Empfangsergebnis, ein von AbstractMessage abgeleiteter Typ , an ihren "Besitzer" liefert.
Da eine Nachricht zusammengesetzt sein kann (ist ja ein Stream, welcher ggf. in Häppchen geliefert wird), wird hier ein Puffer etapliert, welche solange Daten enthält, solnge der Stream nicht vollständig ist. Mehr ...

#include <TcpDataReceiver.h>

Klassendiagramm für tcp::DataReceiver:

Öffentliche Methoden

 DataReceiver (TcpMain *pParent, SOCKET Socket, unsigned int uiDataSize)
 
virtual ~DataReceiver ()
 
unsigned int getDataSize () const
 
void setDataSize (unsigned int uiDataSize)
 
- Öffentliche Methoden geerbt von tcp::Receiver
 Receiver (TcpMain *pParent, SOCKET Socket)
 
virtual ~Receiver ()
 
- Öffentliche Methoden geerbt von tcp::ReceiverTransmitter
 ReceiverTransmitter (SOCKET Socket)
 
virtual ~ReceiverTransmitter ()
 
virtual void finishBreak () override
 
int getPeerName (std::string &rstrIPAdress, unsigned int &ruiPort) const
 
SOCKET Socket () const
 
virtual void takeABreak () override
 
- Öffentliche Methoden geerbt von eut::RepeatingThread
 RepeatingThread ()
 
virtual ~RepeatingThread ()
 
virtual void cancel ()
 
int getBreakCounter ()
 
bool isInExclusiveAccess () const
 
void setExclusiveAccess ()
 
void signalInput ()
 
virtual int start ()
 
RepeatingThread::STATUS status () const
 
bool testCancel ()
 
void unsetExclusiveAccess ()
 
void waitForInput ()
 

Geschützte Methoden

 DataReceiver ()
 
 DataReceiver (SOCKET)
 
 DataReceiver (TcpMain *, SOCKET)
 
virtual int acceptMessage (AbstractMessage *)=0
 
virtual void generateNewTcpMessage (AbstractMessage *&prTcpAbstractMessage, char *pszRawMsg, unsigned int uiRawMsgSize, unsigned int uiMessageID, int iActionCode, const std::string &rstrInfo) const =0
 
virtual void generateNewTcpMessage (AbstractMessage *&prTcpAbstractMessage, char *pszTransmitData, unsigned int uiTransmitDataSize) const =0
 
void initStreamData ()
 
int processReceivedData (char *pszSentBuffer, unsigned int t_uiSentBufferSize)
 
- Geschützte Methoden geerbt von tcp::Receiver
 Receiver ()
 
 Receiver (SOCKET Socket)
 
- Geschützte Methoden geerbt von tcp::ReceiverTransmitter
 ReceiverTransmitter ()
 
- Geschützte Methoden geerbt von eut::RepeatingThread
ORDER getOrder ()
 
STATUS getStatus ()
 
void setStatus (STATUS eStatus)
 
void threadWork ()
 
void toOrder (ORDER eOrder)
 
virtual void work ()=0
 

Geschützte Attribute

char * m_pszSentBuffer
 
char * m_szStreamBuffer
 
unsigned int m_uiDataSize
 
unsigned int m_uiStreamPosistion
 
unsigned int m_uiStreamSize
 
- Geschützte Attribute geerbt von tcp::Receiver
TcpMainm_pParentTcpMain
 
- Geschützte Attribute geerbt von tcp::ReceiverTransmitter
SOCKET m_Socket
 

Private Methoden

 DataReceiver (const DataReceiver &)
 
DataReceiveroperator= (const DataReceiver &)
 

Weitere Geerbte Elemente

- Öffentliche Typen geerbt von eut::RepeatingThread
enum  EuTHREADERROR { EuTHREAD_ERR_NO_THREAD = -10301 , EuTHREAD_ERR_THREAD_ALREADY_WORKING = -10302 , EuTHREAD_ERR_THREAD_BREAK_COUNT_LESS_THAN_ZERO = -10303 , EuTHREAD_ERR_UNKNOWN = -10400 }
 Fehlerbereich = -10301 bis -10400 Mehr ...
 
enum  ORDER { eUNDEFINED , eDO_WORK , eEXIT }
 
enum  STATUS {
  eAT_THE_START , eWORKING , ePAUSING , eENDING ,
  eCOMPLETED
}
 
- Öffentliche Attribute geerbt von eut::RepeatingThread
std::string m_strDebugInfo
 

Ausführliche Beschreibung

Oberklasse für alle Receiver, welche über ein SOCKET kommunizieren und ihr Empfangsergebnis, ein von AbstractMessage abgeleiteter Typ , an ihren "Besitzer" liefert.
Da eine Nachricht zusammengesetzt sein kann (ist ja ein Stream, welcher ggf. in Häppchen geliefert wird), wird hier ein Puffer etapliert, welche solange Daten enthält, solnge der Stream nicht vollständig ist.

Autor
Helmut Jakoby

Beschreibung der Konstruktoren und Destruktoren

◆ DataReceiver() [1/5]

tcp::DataReceiver::DataReceiver ( )
protected

Dieser Konstruktor steht nicht zur Verfügung.

◆ DataReceiver() [2/5]

tcp::DataReceiver::DataReceiver ( SOCKET )
protected

Dieser Konstruktor steht nicht zur Verfügung.

◆ DataReceiver() [3/5]

tcp::DataReceiver::DataReceiver ( TcpMain * ,
SOCKET  )
protected

Dieser Konstruktor steht nicht zur Verfügung.

◆ DataReceiver() [4/5]

tcp::DataReceiver::DataReceiver ( TcpMain * pParent,
SOCKET Socket,
unsigned int uiDataSize )

Konstruktor mit Parameterübergabe.

Parameter
[in]pParentDas besitzende Elternobjekt.
[in]SocketSocket über den kommuniziert wird.
[in]uiDataSizeDie Paketgröße.
Ausnahmebehandlung
eut::ErrorNExceptionBei einem Fehler wird eine Exception geworfen.

◆ ~DataReceiver()

virtual tcp::DataReceiver::~DataReceiver ( )
virtual

Destruktor. Es werden die einzelnen Buffer aufgeräumt.

◆ DataReceiver() [5/5]

tcp::DataReceiver::DataReceiver ( const DataReceiver & )
private

Der Copy-Konstruktor steht nicht zur Verfügung.

Dokumentation der Elementfunktionen

◆ acceptMessage()

virtual int tcp::DataReceiver::acceptMessage ( AbstractMessage * )
protectedpure virtual

Leitet in Unterklassen die übergebene Nachricht an seinen "Besitzer" weiter oder bearbeitet diese selbst. Die Nachricht muss in jedem Fall gelöschet werden.

Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Achtung
Das übergebene Objekt darf von der aufrufenden Instanz nicht aus dem Speicher entfernt werden.
Siehe auch
AbstractMessage, Message, ServerAcceptMessage, ServerMessage

Implementiert in glo::TcpServerReceiver, tcp::ClientReceiver und tcp::ServerReceiver.

◆ generateNewTcpMessage() [1/2]

virtual void tcp::DataReceiver::generateNewTcpMessage ( AbstractMessage *& prTcpAbstractMessage,
char * pszRawMsg,
unsigned int uiRawMsgSize,
unsigned int uiMessageID,
int iActionCode,
const std::string & rstrInfo ) const
protectedpure virtual

Generiert in Unterklassen eine von AbstractMessage abgeleitete Nachricht aus übergebenen Parametern.

Parameter
[in,out]prTcpAbstractMessageZeiger auf neu generierte Nachricht. Dieses Objekt übernimmt das entfernen der pszRawMsg aus dem Speicher.
[in]pszRawMsgDie Nachrichtendaten.
[in]uiRawMsgSizeDie Größe bzw. Länge der Nachrichtendaten.
[in]uiMessageIDEine eindeutige ID.
[in]iActionCodeDer ActionCode.
[in]rstrInfoEine zusätzliche Text-Info
Achtung
Das gelieferte Objekt muss von der aufrufenden Instanz aus dem Speicher entfernt werden.
Siehe auch
AbstractMessage, Message, ServerAcceptMessage, ServerMessage

Implementiert in tcp::ClientReceiver und tcp::ServerReceiver.

◆ generateNewTcpMessage() [2/2]

virtual void tcp::DataReceiver::generateNewTcpMessage ( AbstractMessage *& prTcpAbstractMessage,
char * pszTransmitData,
unsigned int uiTransmitDataSize ) const
protectedpure virtual

Generiert in Unterklassen eine von AbstractMessage abgeleitete Nachricht aus dem übergebenen Datenpuffer und dessen Größe.

Parameter
[in,out]prTcpAbstractMessageZeiger auf neu generierte Nachricht. Dieses Objekt übernimmt das entfernen der pszTransmitData aus dem Speicher.
[in]pszTransmitDataDer Datenpuffer inkl. aller benötigten Informationen.
[in]uiTransmitDataSizeDie Größe bzw. Länge des zu sendenden Datenpuffers.
Achtung
Das gelieferte Objekt muss von der aufrufenden Instanz aus dem Speicher entfernt werden.
Siehe auch
AbstractMessage, Message, ServerAcceptMessage, ServerMessage

Implementiert in tcp::ClientReceiver und tcp::ServerReceiver.

◆ getDataSize()

unsigned int tcp::DataReceiver::getDataSize ( ) const

Liefert die Paketgröße.

Rückgabe
s.o.

◆ initStreamData()

void tcp::DataReceiver::initStreamData ( )
protected

Initialisiert die Stream-Daten (setzt alles auf Null).

◆ operator=()

DataReceiver & tcp::DataReceiver::operator= ( const DataReceiver & )
private

Der Zuweisungsoperator steht nicht zur Verfügung.

◆ processReceivedData()

int tcp::DataReceiver::processReceivedData ( char * pszSentBuffer,
unsigned int t_uiSentBufferSize )
protected

Verarbeitet die empfangenen Daten und baut daraus eine Nachricht (abgeleitet von AbstractMessage durch Aufruf der Methode generateNewTcpMessage (...) ) und liefert diese über acceptMessage (...) an seinen Besitzer weiter.

Parameter
[in]pszSentBufferDer empfangene Buffer
[in]t_uiSentBufferSizeDie Größe des mpfangene Buffers
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.

◆ setDataSize()

void tcp::DataReceiver::setDataSize ( unsigned int uiDataSize)

Setzt die Paketgröße.

Parameter
[in]uiDataSizeDie Paketgröße.

Dokumentation der Datenelemente

◆ m_pszSentBuffer

char* tcp::DataReceiver::m_pszSentBuffer
protected

Der empfangene Buffer in einem Empfangs-Schritt. Wird in den m_szStreamBuffer übertragen. Wenn die Größe des erwarteten Datenpakets noch nicht erreicht ist, wird der nächste empfangene Buffer an m_szStreamBuffer angehängt.

◆ m_szStreamBuffer

char* tcp::DataReceiver::m_szStreamBuffer
protected

Der empfangene Buffer, ggf. zusammengestzt aus mehreren gesendeten m_pszSentBuffer.

Siehe auch
m_pszSentBuffer

◆ m_uiDataSize

unsigned int tcp::DataReceiver::m_uiDataSize
protected

Die Daten-Packetgröße.

◆ m_uiStreamPosistion

unsigned int tcp::DataReceiver::m_uiStreamPosistion
protected

Die aktuelle Streamposition.

◆ m_uiStreamSize

unsigned int tcp::DataReceiver::m_uiStreamSize
protected

Die Streamgröße (aus dem Header).


Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Datei: