\section{CGateway\-Server Klassenreferenz}
\label{classCGatewayServer}\index{CGatewayServer@{CGatewayServer}}
Von {\bf CBernstein\-Msg}{\rm (S.\,\pageref{classCBernsteinMsg})} und {\bf CTCPIPComm}{\rm (S.\,\pageref{classCTCPIPComm})} abgeleitete Klasse, die die Kommunikation darstellt.  


{\tt \#include $<$Gateway\-Server.h$>$}

Klassendiagramm f\"{u}r CGateway\-Server::\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=3.86207cm]{classCGatewayServer}
\end{center}
\end{figure}
\subsection*{\"{O}ffentliche Methoden}
\begin{CompactItemize}
\item 
{\bf CGateway\-Server} (int n\-Server\-Nr=1)
\begin{CompactList}\small\item\em Konstruktor. \item\end{CompactList}\item 
virtual {\bf $\sim$CGateway\-Server} ()\label{classCGatewayServer_a1}

\begin{CompactList}\small\item\em Destruktor. \item\end{CompactList}\item 
virtual void {\bf Connect\-Indication} (void)\label{classCGatewayServer_a2}

\begin{CompactList}\small\item\em Von der Basisklasse {\bf CTCPIPComm}{\rm (S.\,\pageref{classCTCPIPComm})} abgeleitete virtuelle Methode, die anzeigt, dass eine Verbindung aufgebaut ist. \item\end{CompactList}\item 
virtual void {\bf Disconnect\-Indication} (void)\label{classCGatewayServer_a3}

\begin{CompactList}\small\item\em Von der Basisklasse {\bf CTCPIPComm}{\rm (S.\,\pageref{classCTCPIPComm})} abgeleitete virtuelle Methode, die anzeigt, dass eine Verbindung abgebaut ist. \item\end{CompactList}\item 
virtual void {\bf Receive} (void $\ast$p\-Data, long Data\-Len)
\begin{CompactList}\small\item\em Von der Basisklasse {\bf CTCPIPComm}{\rm (S.\,\pageref{classCTCPIPComm})} abgeleitete virtuelle Methode, die Daten von TCP/IP empf\"{a}ngt. \item\end{CompactList}\item 
virtual void {\bf Receive\-RS232} (const char $\ast$p\-Data, long Data\-Len)
\begin{CompactList}\small\item\em Von der Basisklasse {\bf CBernstein\-Msg}{\rm (S.\,\pageref{classCBernsteinMsg})} abgeleitete virtuelle Methode, die Daten von RS232 empf\"{a}ngt. \item\end{CompactList}\item 
bool {\bf Start\-Processing} (void)
\begin{CompactList}\small\item\em Startet die Gateway-Funktionalit\"{a}t. \item\end{CompactList}\item 
bool {\bf Stop\-Processing} (void)
\begin{CompactList}\small\item\em Stoppt die Gateway-Funktionalit\"{a}t. \item\end{CompactList}\item 
virtual void {\bf Add\-Trace} (const char $\ast$lpsz\-Msg, {\bf CTrace\-Object::e\-Trace\-Level} e\-Level=CTrace\-Object::MT\_\-ERROR)
\begin{CompactList}\small\item\em Macht eine Trace-Ausgabe auf dem angeforderten Trace-Level. \item\end{CompactList}\end{CompactItemize}
\subsection*{\"{O}ffentliche, statische Methoden}
\begin{CompactItemize}
\item 
void {\bf Set\-Parameter\-Input} (const char $\ast$lpsz\-Ini\-Filename, const char $\ast$lpsz\-Reg\-Key, bool b\-Run\-As\-Service)
\begin{CompactList}\small\item\em Legt die Eingabe f\"{u}r die Parameter fest. \item\end{CompactList}\item 
int {\bf Get\-Max\-Gateways} (void)\label{classCGatewayServer_e1}

\begin{CompactList}\small\item\em Holt die Anzahl der verf\"{u}gbaren Ports aus der .ini Datei. \item\end{CompactList}\end{CompactItemize}
\subsection*{Private Methoden}
\begin{CompactItemize}
\item 
void {\bf Read\-Ini\-Parameters} (const char $\ast$psz\-Ini\-Filename=NULL)
\begin{CompactList}\small\item\em Liest Gateway-Parameter aus der angegebenen Konfigurationsdatei. \item\end{CompactList}\item 
void {\bf Read\-Reg\-Parameters} (const char $\ast$psz\-Reg\-Key=NULL)
\begin{CompactList}\small\item\em Liest Gateway-Parameter aus der Registry. \item\end{CompactList}\end{CompactItemize}
\subsection*{Private Attribute}
\begin{CompactItemize}
\item 
int {\bf m\_\-n\-COMParity}\label{classCGatewayServer_r0}

\begin{CompactList}\small\item\em Parametrierung COM-Schnittstelle: Parity. \item\end{CompactList}\item 
int {\bf m\_\-n\-COMStop\-Bits}\label{classCGatewayServer_r1}

\begin{CompactList}\small\item\em Parametrierung COM-Schnittstelle: Stop\-Bits. \item\end{CompactList}\item 
int {\bf m\_\-n\-COMBaud\-Rate}\label{classCGatewayServer_r2}

\begin{CompactList}\small\item\em Parametrierung COM-Schnittstelle: Baudrate. \item\end{CompactList}\item 
int {\bf m\_\-n\-COMByte\-Size}\label{classCGatewayServer_r3}

\begin{CompactList}\small\item\em Parametrierung COM-Schnittstelle: Bytesize. \item\end{CompactList}\item 
std::string {\bf m\_\-s\-COMPort}\label{classCGatewayServer_r4}

\begin{CompactList}\small\item\em Parametrierung COM-Schnittstelle: Name des Devices/COM-Ports. \item\end{CompactList}\item 
int {\bf m\_\-n\-Server\-Nr}\label{classCGatewayServer_r5}

\begin{CompactList}\small\item\em Server Identifikation. \item\end{CompactList}\item 
short {\bf m\_\-n\-TCPPort}\label{classCGatewayServer_r6}

\begin{CompactList}\small\item\em Parametrierung TCPIP: Port. \item\end{CompactList}\end{CompactItemize}
\subsection*{Statische private Attribute}
\begin{CompactItemize}
\item 
std::string {\bf m\_\-s\-IPAddress}\label{classCGatewayServer_v0}

\begin{CompactList}\small\item\em Parametrierung TCPIP: IP-Adresse. \item\end{CompactList}\item 
bool {\bf m\_\-b\-Run\-As\-Service} = false\label{classCGatewayServer_v1}

\begin{CompactList}\small\item\em Running\-Mode: NT-Service oder Console-Application. \item\end{CompactList}\item 
std::string {\bf m\_\-s\-File\-Path}\label{classCGatewayServer_v2}

\begin{CompactList}\small\item\em Pfad der Ini-Datei f\"{u}r Konfiguration (Console-Mode). \item\end{CompactList}\item 
std::string {\bf m\_\-s\-Reg\-Key}\label{classCGatewayServer_v3}

\begin{CompactList}\small\item\em Registry-Schluessel f\"{u}r Konfiguaration (Service-Mode). \item\end{CompactList}\item 
{\bf CGateway\-Security} {\bf m\_\-o\-Security}\label{classCGatewayServer_v4}

\end{CompactItemize}


\subsection{Ausf\"{u}hrliche Beschreibung}
Von {\bf CBernstein\-Msg}{\rm (S.\,\pageref{classCBernsteinMsg})} und {\bf CTCPIPComm}{\rm (S.\,\pageref{classCTCPIPComm})} abgeleitete Klasse, die die Kommunikation darstellt. 

\begin{Desc}
\item[Autor:]: Udo Weber \begin{Desc}
\item[Revision]1.12 \end{Desc}
\end{Desc}




\subsection{Beschreibung der Konstruktoren und Destruktoren}
\index{CGatewayServer@{CGateway\-Server}!CGatewayServer@{CGatewayServer}}
\index{CGatewayServer@{CGatewayServer}!CGatewayServer@{CGateway\-Server}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}CGateway\-Server::CGateway\-Server (int {\em n\-Server\-Nr} = {\tt 1})}\label{classCGatewayServer_a0}


Konstruktor. 

\begin{Desc}
\item[Parameter:]
\begin{description}
\item[{\em n\-Server\-Nr}]logische ID des Servers \end{description}
\end{Desc}


\subsection{Dokumentation der Elementfunktionen}
\index{CGatewayServer@{CGateway\-Server}!AddTrace@{AddTrace}}
\index{AddTrace@{AddTrace}!CGatewayServer@{CGateway\-Server}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void CGateway\-Server::Add\-Trace (const char $\ast$ {\em lpsz\-Msg}, {\bf CTrace\-Object::e\-Trace\-Level} {\em e\-Level} = {\tt CTraceObject::MT\_\-ERROR})\hspace{0.3cm}{\tt  [virtual]}}\label{classCGatewayServer_a8}


Macht eine Trace-Ausgabe auf dem angeforderten Trace-Level. 

Die Standard-Logik der Basisklasse {\bf CTrace\-Object}{\rm (S.\,\pageref{classCTraceObject})} wird ge\"{a}ndert. \begin{Desc}
\item[Parameter:]
\begin{description}
\item[{\em lpsz\-Msg}]Trace-Ausgabe \item[{\em e\-Level}]zu pruefende Trace-Level \end{description}
\end{Desc}
\begin{Desc}
\item[R\"{u}ckgabe:]true, false aktiv \end{Desc}


Erneute Implementation von {\bf CTrace\-Object} {\rm (S.\,\pageref{classCTraceObject_a2})}.\index{CGatewayServer@{CGateway\-Server}!ReadIniParameters@{ReadIniParameters}}
\index{ReadIniParameters@{ReadIniParameters}!CGatewayServer@{CGateway\-Server}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void CGateway\-Server::Read\-Ini\-Parameters (const char $\ast$ {\em psz\-Ini\-Filename} = {\tt NULL})\hspace{0.3cm}{\tt  [private]}}\label{classCGatewayServer_d0}


Liest Gateway-Parameter aus der angegebenen Konfigurationsdatei. 

\begin{Desc}
\item[Parameter:]
\begin{description}
\item[{\em n\-Server\-Nr}]lfd. Nr des Gateway-Servers \item[{\em psz\-Ini\-Filename}]Konfigurationsdatei \end{description}
\end{Desc}
\index{CGatewayServer@{CGateway\-Server}!ReadRegParameters@{ReadRegParameters}}
\index{ReadRegParameters@{ReadRegParameters}!CGatewayServer@{CGateway\-Server}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void CGateway\-Server::Read\-Reg\-Parameters (const char $\ast$ {\em psz\-Reg\-Key} = {\tt NULL})\hspace{0.3cm}{\tt  [private]}}\label{classCGatewayServer_d1}


Liest Gateway-Parameter aus der Registry. 

\begin{Desc}
\item[Parameter:]
\begin{description}
\item[{\em n\-Server\-Nr}]lfd. Nr des Gateway-Servers \item[{\em psz\-Reg\-Key}]Name des Registry-Schl\"{u}ssel \end{description}
\end{Desc}
\index{CGatewayServer@{CGateway\-Server}!Receive@{Receive}}
\index{Receive@{Receive}!CGatewayServer@{CGateway\-Server}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void CGateway\-Server::Receive (void $\ast$ {\em p\-Data}, long {\em Data\-Len})\hspace{0.3cm}{\tt  [virtual]}}\label{classCGatewayServer_a4}


Von der Basisklasse {\bf CTCPIPComm}{\rm (S.\,\pageref{classCTCPIPComm})} abgeleitete virtuelle Methode, die Daten von TCP/IP empf\"{a}ngt. 

\begin{Desc}
\item[Parameter:]
\begin{description}
\item[{\em p\-Data}]Zeiger auf den empfangenen Datenbereich. \item[{\em Data\-Len}]L\"{a}nge dieses Datenbereiches. \end{description}
\end{Desc}


Implementiert {\bf CTCPIPComm\-Receive} {\rm (S.\,\pageref{classCTCPIPCommReceive_b0})}.\index{CGatewayServer@{CGateway\-Server}!ReceiveRS232@{ReceiveRS232}}
\index{ReceiveRS232@{ReceiveRS232}!CGatewayServer@{CGateway\-Server}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void CGateway\-Server::Receive\-RS232 (const char $\ast$ {\em p\-Data}, long {\em Data\-Len})\hspace{0.3cm}{\tt  [virtual]}}\label{classCGatewayServer_a5}


Von der Basisklasse {\bf CBernstein\-Msg}{\rm (S.\,\pageref{classCBernsteinMsg})} abgeleitete virtuelle Methode, die Daten von RS232 empf\"{a}ngt. 

\begin{Desc}
\item[Parameter:]
\begin{description}
\item[{\em p\-Data}]Zeiger auf den empfangenen Datenbereich. \item[{\em Data\-Len}]L\"{a}nge dieses Datenbereiches. \end{description}
\end{Desc}


Erneute Implementation von {\bf CBernstein\-Msg} {\rm (S.\,\pageref{classCBernsteinMsg_a3})}.\index{CGatewayServer@{CGateway\-Server}!SetParameterInput@{SetParameterInput}}
\index{SetParameterInput@{SetParameterInput}!CGatewayServer@{CGateway\-Server}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void CGateway\-Server::Set\-Parameter\-Input (const char $\ast$ {\em lpsz\-Ini\-Filename}, const char $\ast$ {\em lpsz\-Reg\-Key}, bool {\em b\-Run\-As\-Service})\hspace{0.3cm}{\tt  [static]}}\label{classCGatewayServer_e0}


Legt die Eingabe f\"{u}r die Parameter fest. 

\begin{Desc}
\item[Parameter:]
\begin{description}
\item[{\em lpsz\-Ini\-Filename}]Name der INI-Datei (Service-Mode) \item[{\em lpsz\-Reg\-Key}]Name des Basis-Registrier-Schl\"{u}ssels (Console-Mode) \item[{\em b\-Run\-As\-Service}]true, falls als Service gestartet \end{description}
\end{Desc}
\index{CGatewayServer@{CGateway\-Server}!StartProcessing@{StartProcessing}}
\index{StartProcessing@{StartProcessing}!CGatewayServer@{CGateway\-Server}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool CGateway\-Server::Start\-Processing (void)}\label{classCGatewayServer_a6}


Startet die Gateway-Funktionalit\"{a}t. 

\begin{Desc}
\item[R\"{u}ckgabe:]true, falls keine Fehler aufgetreten sind \end{Desc}
\index{CGatewayServer@{CGateway\-Server}!StopProcessing@{StopProcessing}}
\index{StopProcessing@{StopProcessing}!CGatewayServer@{CGateway\-Server}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool CGateway\-Server::Stop\-Processing (void)}\label{classCGatewayServer_a7}


Stoppt die Gateway-Funktionalit\"{a}t. 

\begin{Desc}
\item[R\"{u}ckgabe:]true, falls keine Fehler aufgetreten sind \end{Desc}


Die Dokumentation f\"{u}r diese Klasse wurde erzeugt aufgrund der Dateien:\begin{CompactItemize}
\item 
Gateway\-Server.h\item 
Gateway\-Server.cpp\end{CompactItemize}
