Rezervační systém
Veřejné metody | Seznam všech členů
Dokumentace třídy CServerMsg

serverová část komunikace pomocí zpráv Windows ...

#include <ServerMsg.h>

Diagram dědičnosti pro třídu CServerMsg
CServerConnection CMsgEndpoint

Veřejné metody

 CServerMsg (const char *pszServerWnd, unsigned uiThreads, FnProcess fnProcess, void *pParam)
 konstruktor ...
 
virtual ~CServerMsg ()
 destruktor ...
 
virtual bool Start (void)
 spuštění serveru ...
 
virtual void Stop (void)
 zastavení serveru ...
 
- Veřejné metody dědí se z CServerConnection
 CServerConnection (FnProcess fnProcess, void *pParam)
 konstruktor ...
 
virtual ~CServerConnection ()
 destruktor
 

Další zděděné členy

- Chráněné metody dědí se z CServerConnection
bool CallProcessing (unsigned *puiResult, CBlob *cCmd)
 vyvolání uživatelské funkce ...
 

Detailní popis

serverová část komunikace pomocí zpráv Windows

Třída zabezpečuje serverovou část komunikace pomocí zpráv operačního systému. Implementuje rozhraní CServerConnection, pro vytvoření a obsluhu přijímacího okna používá funcionalitu třídy CMsgEndpoint.

Pomocné vlákno pro obsluhu okna je vytvořeno po celou dobu života instance serveru, je vytvořeno v konstruktoru CMsgEndpoint. Voláním Start se vytváří pracovní vlákno a server přechází do aktivního stavu. Pracovní vlákno čeká na událost signalizující příchod zprávy. Příchozí zpráva WM_COPYDATA je zpracována procedurou okna a uložena do interního kontajneru. Pracovní vlákno následně vytváří zpracovatelské vlákno a čeká na příchod další zprávy. Zpracovatelské vlákno vyzvedne zprávu z kontajneru a zavolá uživatelem definovou funkci pro zpracování dat. Nakonec odešle výsledná data formou zprávy typu WM_COPYDATA pomocí funkce SendMessage do okna, jehož handle byl uveden v přijatých datech, a svou činnost ukončí. Mezitím pracovní vlákno mohlo vytvořit další zpracovatelská vlákna, kterých tak může existovat více paralelně.

ServerMsg.png
Vlákna při činnosti serveru

Vlákno, které vytváří instanci serveru, je na diagramu znázorněno žlutými bloky, modře je vyznačeno pracovní vlákno serveru a oranžově zpracovatelské vlákno (jeden zástupce). Funcionalita vytvoření okna, obsluha zpráv v proceduře okna a obsluha smyčky zpráv je zděděna od CMsgEndpoint, na diagramu používá barvu šedou.

Nepředpokládá se vytváření více instancí tohoto typu serveru, proto se pro jméno a třídu interního okna implicitně použijí defaultní hodnoty z Const.h (což následně umožňuje klientům toto okno v systému vyhledat pomocí FindWindowEx).

Dokumentace konstruktoru a destruktoru

CServerMsg::CServerMsg ( const char *  pszServerWnd,
unsigned  uiThreads,
FnProcess  fnProcess,
void *  pParam 
)

konstruktor

Vytvoření instance vícevláknového serveru pro příjem a zpracování příkazů transportovaných pomocí zpráv Windows. Pro třídu interního okna využívá defaultní hodnoty.

Parametry
[in]pszServerWndjméno skrytého okna, které slouží pro příjem zpráv od klientů
[in]uiThreadsmaximální počet paralelně běžících zpracovatelských vláken
[in]fnProcessadresa funkce typu FnProcess pro zpracování příkazů na serveru
[in]pParamlibovolný parametr, který bude předán uživatelské funkci
virtual CServerMsg::~CServerMsg ( )
virtual

destruktor

Provede zrušení interního přijímacího okna, čeká na dokončení všech zpracovatelských vláken a nakonec odešle zprávu WM_QUIT, čímž ukončí smyčku zpráv vlákna obsluhy okna, které následně také končí svou činnost. Nakonec uvolní veškeré alokované zdroje.

Dokumentace k metodám

virtual bool CServerMsg::Start ( void  )
virtual

spuštění serveru

Návratová hodnota
úspěch operace (true, pokud server přešel do aktivního stavu)

Implementuje CServerConnection.

virtual void CServerMsg::Stop ( void  )
virtual

zastavení serveru

Server přestane přijímat zprávy od kompatibilních klientů.

Implementuje CServerConnection.


Dokumentace pro tuto třídu byla generována z následujícího souboru: