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

třída pro obsluhu přenosu zpráv mezi procesy ...

#include <MsgEndpoint.h>

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

Veřejné metody

 CMsgEndpoint (const char *pszName, const char *pszClass)
 konstruktor ...
 
 ~CMsgEndpoint ()
 destruktor ...
 
bool Send (CMsgData *cMsg)
 odeslání dat ...
 
HANDLE ReceivedEvent (void) const
 událost o dostupnosti dat ...
 
unsigned Received (void)
 počet přijatých zpráv ...
 
bool Get (CMsgData *cMsg)
 vyzvednutí dat ...
 
void Enable (bool fYesNo)
 pozastavení/obnovení příjmu zpráv ...
 
void ClearReceived (void)
 vyprázdnění kontajneru přijatých zpráv
 

Detailní popis

třída pro obsluhu přenosu zpráv mezi procesy

Zprávy mezi procesy jsou přenášeny pomocí zprávy WM_COPYDATA operačního systému oběma směry. K tomu musí na přijímací straně existovat okno, které zprávu přijme a zpracuje, a vlákno, které zaručuje obsluhu ostatních zpráv zasílaných pomocí PostMessage. Odesílání zpráv probíhá v blokujícím režimu (pomocí SendMessage). Třída samotná neprovádí žádnou další manipulaci s přenášenými informacemi, to je úlohou vyšších vrstev.

Přijaté zprávy jsou uchovávány v interním kontajneru, do kterého se sekvenčně přidávají. Konzistence dat v kantajneru při souběžném přístupu z více vláken je zajištěna kritickou sekcí. Dostupnost dat je signalizována pomocí objektu jádra - události.

Dokumentace konstruktoru a destruktoru

CMsgEndpoint::CMsgEndpoint ( const char *  pszName,
const char *  pszClass 
)

konstruktor

Konstruktor provádí vytvoření a spuštění pracovního vlákna, které zajišťuje:

  • registraci třídy okna, pokud je třeba
  • vytvoření nevizuálního okna určeného pouze pro příjem a zpracování WM_COPYDATA (ostatní zprávy jsou předány standardní obsluze)
  • provádění smyčky zpráv pro řádnou obsluhu post zpráv
Parametry
[in]pszNamejméno okna pro příjem zpráv
Důležité na straně serveru pro nalezení příjemce zpráv od klienta. Pokud je NULL, použije se defaultní jméno.
[in]pszClassjméno třídy okna, které je vytvořeno pro příjem zpráv
Pro hodnotu NULL se použije defaultní třída.
CMsgEndpoint::~CMsgEndpoint ( )

destruktor

Při destrukci objektu se provede zrušení okna, ukončení smyčky zpráv v pracovním vlákně (pomocí zprávy WM_QUIT) a počká se na ukončení pracovního vlákna. Až poté následuje dealokace všech zdrojů.

Dokumentace k metodám

void CMsgEndpoint::Enable ( bool  fYesNo)

pozastavení/obnovení příjmu zpráv

Po spuštění pracovního vlákna a vytvoření okna je toto připraveno přijímat a zpracovávat zprávy WM_COPYDATA. Toto lze dočasně pozastavit a později opět obnovit. V případě pozastaveného příjmu je návratová hodnota metody Send false. Jiných zpráv se pozastavení netýká, jsou zpracovávány normálně.

Parametry
[in]fYesNopovolení (true) nebo pozastavení (ve false) příjmu zpráv
bool CMsgEndpoint::Get ( CMsgData cMsg)

vyzvednutí dat

Vyzvednutí první zprávy z datového kontajneru a předání do příslušné třídy.

Parametry
[out]cMsgdata přijaté zpravy, která se skládají z handle okna pro odpověď, stavového slova a vlastního pole binárních dat
Návratová hodnota
provedení operace - false v případě prázdného kontajneru
unsigned CMsgEndpoint::Received ( void  )

počet přijatých zpráv

Návratová hodnota
počet zpráv ve vnitřním kontajneru
HANDLE CMsgEndpoint::ReceivedEvent ( void  ) const

událost o dostupnosti dat

@return handle události, jejíž signalizovaný stav značí přítomnost dat

ve vnitřním kontajneru

bool CMsgEndpoint::Send ( CMsgData cMsg)

odeslání dat

Provede uložení předaných dat do formátu zprávy WM_COPYDATA a jejich odeslání pomocí SendMessage do cílového okna.

Parametry
[in]cMsgdata zprávy k odeslání (kromě pole binárních dat obsahují i stavové slovo a handle přijímacího okna)
Návratová hodnota
úspěch operace (true) či selhání (false) např. v důsledku neexistence přijímacího okna

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