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>
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).
- Copyright
- © 2010 Helmut Jakoby
- Autor
- Helmut Jakoby
◆ Communicator() [1/2]
glo::Communicator::Communicator |
( |
| ) |
|
◆ ~Communicator()
virtual glo::Communicator::~Communicator |
( |
| ) |
|
|
virtual |
◆ Communicator() [2/2]
Der Copy-Konstruktor steht niccht zur Verfügung.
◆ assignDBManager()
virtual int glo::Communicator::assignDBManager |
( |
OrderMsg * | pOrderMsg | ) |
|
|
virtual |
◆ 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] | rT | Das mit diesem zu vergleichende Objekt. |
◆ operator=()
Der Zuweisungsoperator steht nicht zur Verfügung.
◆ operator==()
bool glo::Communicator::operator== |
( |
const Communicator & | rT | ) |
const |
Vergleichsoperator.
- Parameter
-
[in] | rT | Das 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] | pOrderMsg | Der Auftrag. |
Erneute Implementation in glo::ServerThread.
◆ sendToDBManager()
virtual int glo::Communicator::sendToDBManager |
( |
OrderMsg * | pOrderMsg | ) |
const |
|
protectedpure virtual |
◆ setClientName()
virtual void glo::Communicator::setClientName |
( |
const std::string & | rstrClientName | ) |
|
|
virtual |
Setzt den Namen des Kommunikator.
- Parameter
-
[in] | rstrClientName | Der Name des Kommunikators. |
◆ setCommunicatorID()
virtual void glo::Communicator::setCommunicatorID |
( |
unsigned int | uiID | ) |
|
|
virtual |
Setzt die eindeutige ID des Kommunikator.
- Parameter
-
[in] | uiID | Die 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] | pOrderMsg | Die 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.
◆ 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: