GlobalObjects
Lade ...
Suche ...
Keine Treffer
glo::ClientThread Klassenreferenz

Objekte dieser Klasse dienen als Schnittstelle zwischen Base bzw. PrivateBase und Manager. Wird mit dem LocalThread in der Dokumentation auch als Client-Kommunikator bezeichnet, wenn NICHT der Server-Kommunikator (ServerThread) gemeint ist. Mehr ...

#include <GloClientThread.h>

Klassendiagramm für glo::ClientThread:

Öffentliche Methoden

 ClientThread (const std::string &rstrHostname, unsigned int uiPort, int iSecTimeOut)
 
 ~ClientThread ()
 
virtual int assignDBManager (OrderMsg *pOrderMsg) override
 
virtual void cancel () override
 
const std::map< unsigned long, ClassInfo * > * getSchemaMap ()
 
bool Orderstop () const
 
void setOrderstop (bool bOrderstop=true)
 
void setSchemaMap (std::map< unsigned long, ClassInfo * > *pSchemaMap)
 
ClienttcpClient ()
 
bool operator== (const ClientThread &rT) const
 
bool operator!= (const ClientThread &rT) const
 
- Öffentliche Methoden geerbt von glo::Communicator
 Communicator ()
 
virtual ~Communicator ()
 
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 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

void deleteSchemaMap ()
 
virtual int sendToDBManager (OrderMsg *pOrderMsg) const override
 
- Geschützte Methoden geerbt von glo::Communicator
virtual void processServerMsg (OrderMsg *pOrderMsg) const
 
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)
 

Private Methoden

 ClientThread ()
 
 ClientThread (const ClientThread &)
 
int initTcpClient (const std::string &rstrHostname, unsigned int uiPort, int iSecTimeOut)
 
ClientThreadoperator= (const ClientThread &)
 

Private Attribute

bool m_bOrderstop
 
std::map< unsigned long, ClassInfo *, std::less< unsigned long > > * m_pSchemaMap
 
Clientm_pTcpClient
 

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
 
- Geschützte Attribute geerbt von glo::Communicator
unsigned int m_uiOrderCounter
 

Ausführliche Beschreibung

Objekte dieser Klasse dienen als Schnittstelle zwischen Base bzw. PrivateBase und Manager. Wird mit dem LocalThread in der Dokumentation auch als Client-Kommunikator bezeichnet, wenn NICHT der Server-Kommunikator (ServerThread) gemeint ist.

Gegenstelle ist über die TCP-Kommunikatoren der ServerThread.

Der ClientThread sendet Aufträge über seinen Client an den Manager und wartet bis der Auftrag ausgeführt wurde (oder auch nicht).

Der Manager (als Server) übergiebt den abgearbeiteten Auftrag über seinen korrespondierenden ServerThread an den ClientThread, welcher den Auftrag in hiesiege Auftragsliste gibt.

Objekte dieser Klasse sind notwendig, wenn die Base mit einem Servernamen oder einer IP-Adresse aufgerufen wird und der Manager als Server läuft.

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

Siehe auch
ServerThread
Autor
Helmut Jakoby

Beschreibung der Konstruktoren und Destruktoren

◆ ClientThread() [1/3]

glo::ClientThread::ClientThread ( )
private

Der Standard-Konstruktor steht nicht zur Verfügung.

◆ ClientThread() [2/3]

glo::ClientThread::ClientThread ( const std::string & rstrHostname,
unsigned int uiPort,
int iSecTimeOut )

Konstruktor mit Parameterübergabe.

Parameter
[in]rstrHostnameDer Host- bzw, Servername oder die IP-Adresse (z.B. "192.165.0.1").
[in]uiPortDer Port, auf dem der Server ansprechbar ist.
[in]iSecTimeOutDie max. Wartezeit auf den Server.
Ausnahmebehandlung
eut::ErrorNExceptionBei einem Fehler wird eine Exception geworfen.

◆ ~ClientThread()

glo::ClientThread::~ClientThread ( )

Destruktor.

◆ ClientThread() [3/3]

glo::ClientThread::ClientThread ( const ClientThread & )
private

Der Copy-Konstruktor steht niccht zur Verfügung.

Dokumentation der Elementfunktionen

◆ assignDBManager()

virtual int glo::ClientThread::assignDBManager ( OrderMsg * pOrderMsg)
overridevirtual

Versendet einen Auftrag an den Manager und wartet auf Antwort.

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

Erneute Implementation von glo::Communicator.

◆ cancel()

virtual void glo::ClientThread::cancel ( )
overridevirtual

Räumt den Speicher auf und beendet eine vorhandene Verbindung zu einem Server, bevor der Thread beendet wird. Wird im besitzenden PrivateBase vor beenden des Threads aufgerufen.

Da virtual, kann diese Methode nicht im Destructor aufgerufen werden.

Zu beachten
Diese Methode gibt es nur, wenn nicht mit POSIX-Threads kompiliert (defined (__PTHREADS)).

Erneute Implementation von eut::RepeatingThread.

◆ deleteSchemaMap()

void glo::ClientThread::deleteSchemaMap ( )
protected

Entfernt die Liste mit den Klasseninformations-Objekten aus dem Speicher.

◆ getSchemaMap()

const std::map< unsigned long, ClassInfo * > * glo::ClientThread::getSchemaMap ( )

Liefert einen Zeiger auf die eigenen Klasseninformations-Objekte.

Rückgabe
Der Zeiger auf die Liste der eigenen Klasseninformations-Objekte.
Achtung
Die aufrufende Instanz darf weder den gelieferten Kontainer, noch die entahltenen Klasseninformations-Objekte aus dem Speicher entfernen.

◆ initTcpClient()

int glo::ClientThread::initTcpClient ( const std::string & rstrHostname,
unsigned int uiPort,
int iSecTimeOut )
private

Initialisiert den TCP-Client, welcher mit einm TCP-Server kommuniziert.

Parameter
[in]rstrHostnameDer Host- bzw, Servername oder die IP-Adresse (z.B. "192.165.0.1").
[in]uiPortDer Port, auf dem der Server ansprechbar ist.
[in]iSecTimeOutDie max. Wartezeit auf den Server.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

◆ operator!=()

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

Vergleichsoperator.

Parameter
[in]rTDas mit diesem zu vergleichende Objekt.

◆ operator=()

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

Der Zuweisungsoperator steht nicht zur Verfügung.

◆ operator==()

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

Vergleichsoperator.

Parameter
[in]rTDas mit diesem zu vergleichende Objekt.

◆ Orderstop()

bool glo::ClientThread::Orderstop ( ) const

Liefert, ob ein Auftragsannahmestop vorliegt.

Rückgabe
Wenn true, werden keine Aufträge mehr angenommen.

◆ sendToDBManager()

virtual int glo::ClientThread::sendToDBManager ( OrderMsg * pOrderMsg) const
overrideprotectedvirtual

Versendet einen Auftrag (bekommen über ClientThread::assignDBManager() ) über seinen TCP-Client an den Manager.

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

Implementiert glo::Communicator.

◆ setOrderstop()

void glo::ClientThread::setOrderstop ( bool bOrderstop = true)

Setzt den Auftragsannahmestop.

Parameter
[in]bOrderstopWenn true, werden keine Aufträge mehr angenommen.

◆ setSchemaMap()

void glo::ClientThread::setSchemaMap ( std::map< unsigned long, ClassInfo * > * pSchemaMap)

Übernimmt die Klasseninformations-Objekte, nachdem die aktuellen aus dem Speicher entfernt wurden.

Parameter
[in]pSchemaMapDie neuen Klasseninformations-Objekte.
Achtung
Die Liste mit den neuen Klasseninformations-Objekte gehen 'in den Besitz' über, bedeutet, die aufrufende Instanz darf weder die gelieferte Liste noch die einzelnen Klasseninformations-Objekte aus dem Speicher entfernen.

◆ tcpClient()

Client * glo::ClientThread::tcpClient ( )

Liefert m_pTcpClient.

Rückgabe
s.o.
Achtung
Die aufrufende Instanz darf das gelieferte Objekt NICHT ändern oder aus dem Speicher entfernen. Es lebt nur so lange wie dieses Objekt respektiv wie m_pTcpClient.

Dokumentation der Datenelemente

◆ m_bOrderstop

bool glo::ClientThread::m_bOrderstop
private

Wenn true, werden keine Aufträge mehr angenommen.

◆ m_pSchemaMap

std::map< unsigned long, ClassInfo *, std::less<unsigned long> >* glo::ClientThread::m_pSchemaMap
private

Die Klasseninformationen des zugrundeliegenden Schemas.

◆ m_pTcpClient

Client* glo::ClientThread::m_pTcpClient
private

Der TCP-Client, welcher mit einm TCP-Server kommuniziert.


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