Rezervační systém
|
serverová část komunikace pomocí zpráv Windows ...
#include <ServerMsg.h>
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 ... | |
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ě.
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
).
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.
[in] | pszServerWnd | jméno skrytého okna, které slouží pro příjem zpráv od klientů |
[in] | uiThreads | maximální počet paralelně běžících zpracovatelských vláken |
[in] | fnProcess | adresa funkce typu FnProcess pro zpracování příkazů na serveru |
[in] | pParam | libovolný parametr, který bude předán uživatelské funkci |
|
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.
|
virtual |
spuštění serveru
Implementuje CServerConnection.
|
virtual |
zastavení serveru
Server přestane přijímat zprávy od kompatibilních klientů.
Implementuje CServerConnection.