GlobalObjects
Lade ...
Suche ...
Keine Treffer
glo::Communicator Klassenreferenzabstract

OberKlasse von LocalThread, ClientThread und ServerThread, weil diese als Sender und Empfänger (Kommunikatoren) von Aufträgen fungieren können und dafür eine Sende- und Empfangs-Methode erben. Mehr ...

#include <GloCommunicator.h>

Klassendiagramm für glo::Communicator:

Öffentliche Methoden

 Communicator ()
 
virtual ~Communicator ()
 
virtual int assignDBManager (OrderMsg *pOrderMsg)
 
std::string getClientName () const
 
const std::string & getClientNameAsRef ()
 
unsigned int getCommunicatorID () const
 
virtual void setClientName (const std::string &rstrClientName)
 
virtual void setCommunicatorID (unsigned int uiID)
 
virtual int takeOverResult (OrderMsg *pOrderMsg)
 
bool operator== (const Communicator &rT) const
 
bool operator!= (const Communicator &rT) const
 
- Öffentliche Methoden geerbt von eut::RepeatingThread
 RepeatingThread ()
 
virtual ~RepeatingThread ()
 
virtual void cancel ()
 
virtual void finishBreak ()
 
int getBreakCounter ()
 
bool isInExclusiveAccess () const
 
void setExclusiveAccess ()
 
void signalInput ()
 
virtual int start ()
 
RepeatingThread::STATUS status () const
 
virtual void takeABreak ()
 
bool testCancel ()
 
void unsetExclusiveAccess ()
 
void waitForInput ()
 

Geschützte Methoden

virtual void processServerMsg (OrderMsg *pOrderMsg) const
 
virtual int sendToDBManager (OrderMsg *pOrderMsg) const =0
 
virtual void work () override
 
- Geschützte Methoden geerbt von eut::RepeatingThread
ORDER getOrder ()
 
STATUS getStatus ()
 
void setStatus (STATUS eStatus)
 
void threadWork ()
 
void toOrder (ORDER eOrder)
 

Geschützte Attribute

unsigned int m_uiOrderCounter
 

Private Methoden

 Communicator (const Communicator &)
 
Communicatoroperator= (const Communicator &)
 

Private Attribute

std::queue< OrderMsg * > m_MsgQueue
 
std::string m_sClientName
 
unsigned int m_uiID
 

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 von LocalThread, ClientThread und ServerThread, weil diese als Sender und Empfänger (Kommunikatoren) von Aufträgen fungieren können und dafür eine Sende- und Empfangs-Methode erben.

Damit parallel auf die Datenbank zugegriffen werden kann, ist diese Klasse als Thread konzipiert (abgeleitet von EuEndlessPThread).

Autor
Helmut Jakoby

Beschreibung der Konstruktoren und Destruktoren

◆ Communicator() [1/2]

glo::Communicator::Communicator ( )

Standard-Konstruktor.

◆ ~Communicator()

virtual glo::Communicator::~Communicator ( )
virtual

Destruktor.

◆ Communicator() [2/2]

glo::Communicator::Communicator ( const Communicator & )
private

Der Copy-Konstruktor steht niccht zur Verfügung.

Dokumentation der Elementfunktionen

◆ assignDBManager()

virtual int glo::Communicator::assignDBManager ( OrderMsg * pOrderMsg)
virtual

Versendet einen Auftrag an den Manager und wartet auf Antwort.

Parameter
[in]pOrderMsgDer Auftrag für den Manager.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

Erneute Implementation in glo::ClientThread, glo::LocalThread und glo::ServerThread.

◆ getClientName()

std::string glo::Communicator::getClientName ( ) const

Liefert den Namen des Kommunikator.

Rückgabe
Der Name des Kommunikators.

◆ getClientNameAsRef()

const std::string & glo::Communicator::getClientNameAsRef ( )

Liefert den Namen des Kommunikator als Referenz.

Rückgabe
Der Name des Kommunikators.

◆ getCommunicatorID()

unsigned int glo::Communicator::getCommunicatorID ( ) const

Liefert die eindeutige ID des Kommunikator.

Rückgabe
Die eindeutige ID des Kommunikators.

◆ operator!=()

bool glo::Communicator::operator!= ( const Communicator & rT) const

Vergleichsoperator.

Parameter
[in]rTDas mit diesem zu vergleichende Objekt.

◆ operator=()

Communicator & glo::Communicator::operator= ( const Communicator & )
private

Der Zuweisungsoperator steht nicht zur Verfügung.

◆ operator==()

bool glo::Communicator::operator== ( const Communicator & rT) const

Vergleichsoperator.

Parameter
[in]rTDas mit diesem zu vergleichende Objekt.

◆ processServerMsg()

virtual void glo::Communicator::processServerMsg ( OrderMsg * pOrderMsg) const
protectedvirtual

Verarbeitet hier nur einen Benachrichtigungs-Auftrag (Auftragstayp == OrderMsg::eNOTIFY_CLIENT).

jeder Auftrag wird hier aus dem Speicher entfernt, muss deshalb von den überschriebenen Methoden in den Unterklassen aufgerufen werden.

Parameter
[in]pOrderMsgDer Auftrag.

Erneute Implementation in glo::ServerThread.

◆ sendToDBManager()

virtual int glo::Communicator::sendToDBManager ( OrderMsg * pOrderMsg) const
protectedpure virtual

Versendet in Unterklassen einen Auftrag (bekommen über assignDBManager() ) an den Manager. In den Unterklassen direkt oder über TCP/IP.

Parameter
[in]pOrderMsgDer Auftrag für den Manager.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

Implementiert in glo::ClientThread, glo::LocalThread und glo::ServerThread.

◆ setClientName()

virtual void glo::Communicator::setClientName ( const std::string & rstrClientName)
virtual

Setzt den Namen des Kommunikator.

Parameter
[in]rstrClientNameDer Name des Kommunikators.

◆ setCommunicatorID()

virtual void glo::Communicator::setCommunicatorID ( unsigned int uiID)
virtual

Setzt die eindeutige ID des Kommunikator.

Parameter
[in]uiIDDie eindeutige ID des Kommunikators.
Achtung
Die aufrufende Instanz muss sicherstellen, dass die ID eindeutig ist.

◆ takeOverResult()

virtual int glo::Communicator::takeOverResult ( OrderMsg * pOrderMsg)
virtual

Übernimmt eine Nachricht in seine Nachrichten-Queue um diese zu verarbeiten.

Parameter
[in]pOrderMsgDie abzuarbeitende Nachricht.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.
Siehe auch
signalInput()

Erneute Implementation in glo::ServerThread.

◆ work()

virtual void glo::Communicator::work ( )
overrideprotectedvirtual

Diese Methode wird als Thread ausgeführt. Es wird die Nachrichten-Queue nach Aufträgen und Antworten auf eigene Aufträge abgefragt (es wird 'geschlafen' bis eine Nachricht in die Queue gestellt wird).

Siehe auch
waitForInput()

Implementiert eut::RepeatingThread.

Dokumentation der Datenelemente

◆ m_MsgQueue

std::queue<OrderMsg *> glo::Communicator::m_MsgQueue
private

Die Benachrichtigungs-Queue; es werden Benachrichtigungen wie z.B. Informationen von überwachten Objekten eingestellt.

◆ m_sClientName

std::string glo::Communicator::m_sClientName
private

Jeder Kommunikator kann einen Namen haben.

◆ m_uiID

unsigned int glo::Communicator::m_uiID
private

Eine eindeutige ID des (abgeleiteten) Kommunikator.

◆ m_uiOrderCounter

unsigned int glo::Communicator::m_uiOrderCounter
protected

Aufträge an den Manager bekommen eine eindeutige Auftragsnummer. Die Antworten vom Manager werden über diese Auftragsnummer referenziert, können also damit einem Auftrag zugeordnet werden.


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