Az adatszolgáltatási rendszer kliens felülete
Budapest, 1999. május 21. BÉT projekt
Az adatszolgáltatási rendszer kliens felülete
AZ ADATSZOLGÁLTATÁSI AZONOSÍTÁSA
RENDSZER
KLIENS
FELÜLETE
A adatszolgáltatási rendszer kliens felülete 20 számozott lapot tartalmaz Készítette:
1999. május 20.
Jóváhagyta: 1999. május 21.
Kovács Gábor Kollár Dóra
A példány sorszáma: …. és tulajdonosa: …………………
MÓDOSÍTÁSOK JEGYZÉKE
Sorsz.: 1.
Oldal / fejezet: 4. fejezet
2.
1999. május 21.
Változtatás jellege:
Kelt:
Aláírás:
A rekordformátumok módosítása 1999. 05. 21. (nem képezi a dokumentum szerves részét) 1999. 05. 21. A dokumentum angol nyelven is elkészült
Változatszám 2.1.
2/20
Az adatszolgáltatási rendszer kliens felülete
Tartalomjegyzék
1. Bevezetés .......................................................................................................................... 4 2. Az adatszolgáltatási rendszer mőködése....................................................................... 4 3. A programozói interfész felépítése................................................................................. 6 3.1
3.2
A C++ nyelvő programozói interfész.................................................................... 6 3.1.1
A kommunikációs kapcsolat kezelésének eszközei....................... 6
3.1.2
A kommunikációs kapcsolat eseményeinek callback osztálya...... 7
3.1.3
Példa a kapcsolat felvételére és a callback mechanizmus használatára.................................................................................... 9
3.1.4
A kiszolgáló folyamatok vezérlése .............................................. 11
3.1.5
Az adatkérések regisztrálása........................................................ 11
3.1.6
A kiszolgáló folyamatok callback ısosztálya.............................. 12
3.1.7
Az adatkérések callback osztálya ................................................ 13
3.1.8
Az üzenetek fogadására szolgáló folyamat callback osztálya ..... 14
A C nyelvő programozói interfész ...................................................................... 15
Melléklet:
1999. május 21.
3.2.1
A kommunikációs kapcsolat kezelésének eszközei..................... 15
3.2.2
A kommunikációs kapcsolat eseményeinek callback függvényei ................................................................................... 16
3.2.3
A kiszolgáló folyamatok vezérlése .............................................. 16
3.2.4
A kiszolgáló folyamatok vezérlésének callback függvényei....... 17
3.2.5
Az adatkérések regisztrálása........................................................ 18
Technikai specifikáció A B C D E F G H
Változatszám 2.1.
3/20
Az adatszolgáltatási rendszer kliens felülete
1. Bevezetés A Budapesti Értéktızsde (BÉT) annak érdekében, hogy a kereskedés eseményeirıl pontosabb és bıvebb információt szolgáltathasson, új adatszolgáltatási rendszert helyez üzembe. Az új adatszolgáltatási rendszer a mőködés struktúrájában, a szolgáltatott adatok tekintetében és a szolgáltatás biztonságát illetıen jelentısen eltér a korábban üzemelı rendszertıl, ezért a következıkben áttekintésre kerülnek a változások a részletes mőszaki specifikációk és adatszerkezetek bemutatásával együtt. Itt szeretnénk megjegyezni, hogy a szolgáltatott adatok szerkezetében változásokra csak a bıvített adattartalom (öt legjobb ajánlat) elhelyezhetıségének mértékéig került sor, a lényegi változás az adatok elérhetıségének módjában van. Az adatszolgáltató rendszer és a kliens oldali alkalmazások illesztésének megkönnyítése érdekében C++ és C nyelvő programozói interfész is kialakításra került. Figyelembe véve, hogy az új rendszer szolgáltatásainak igénybevételéhez a vendoroknak is fel kell készülni, ezért a BÉT 1999. augusztus 31-ig biztosítja a kereskedési adatoknak a korábbi, fájlmegosztáson alapuló elérhetıségét. A fájlmegosztáson alapuló adatszolgáltatás az új rendszerrel párhuzamosan, a megnövelt sebességő TCP/IP hálózaton keresztül érhetı el. A BÉT az átmenet idıszakában a fájlmegosztásos rendszerben is biztosítja a bıvített adattartalmú, azaz a legjobb öt ajánlatot tartalmazó adatszolgáltatást. Jelen dokumentum célja, hogy ismertesse az adatszolgáltató rendszer programozói felületét és segítséget nyújtson a kliens oldali programfejlesztık számára az új rendszerre való áttéréshez és annak használatához.
2. Az adatszolgáltatási rendszer mőködése A rendszer kliens/szerver architektúrával rendelkezik, amely a korábbi adatszolgáltatással lényegében megegyezı adatszerkezettel teszi lehetıvé az adatok elérését a vendorok számára. Az adatszolgáltatási rendszer a szerzıdéseknek megfelelıen két típusú szolgáltatást nyújt, a korábbival megegyezı vagy az öt legjobb ajánlattal kiegészített adattartalommal. A megfelelı adatszerkezetek leírása a techikai specifikáció mellékletében található. Az új adatszolgáltatási rendszer felépítését a következı ábra szemlélteti:
1999. május 21.
Változatszám 2.1.
4/20
Az adatszolgáltatási rendszer kliens felülete
Real-time szerver
Kapcsolatfelvételi szerver
Felhasználói kliens
vendrt_ééééhhnn.dat
Kereskedési rendszerek
Adatfogadó program
vendrto_ééééhhnn.dat
Kommunikációs szerver
Kommunikációs felület
Telefon hálózat
Kommunikációs felület
Központi Nyilvántartás
Kommunikációs felület
LOG szerver
Felhasználói felület
API
vendset_ééééhhnn.dat
A kereskedési rendszerekbıl érkezı real-time kereskedési adatokat a szerver egy dátumbélyeggel ellátott vendrt_ééééhhnn.dat (ahol éééé az évet, hh a hónapot, nn a napot jelöli) nevő fájlba helyezi. A napi záró adatokat tartalmazó állomány vendset_ééééhhnn.dat (ahol éééé az évet, hh a hónapot, nn a napot jelöli) néven a kereskedés végén kerül a szerverre. A kereskedési adatokat tartalmazó állományok a BÉT szabályozása szerint meghatározott ideig (jelenleg 1 hétig) érhetık el a szerveren, biztosítva a felhasználók számára az elızı napok adataihoz történı hozzáférést. A rendszerben a sikeres és sikertelen kapcsolódások, valamint az igénybevett szolgáltatások folyamatosan naplózásra kerülnek. Az adatszolgáltatási rendszer használatának megkezdéséhez hálózati kapcsolatot kell kiépíteni a BÉT routerén keresztül az adatszolgáltatási rendszer hálózatával. Ez történhet bérelt vonalon, ISDN telefonvonalon vagy kapcsolt vonalon keresztül. Vonali kapcsolódás esetén a kapcsolat a (00 36 1) 327-82-00 -as telefonszámon kezdeményezhetı. A hálózati kapcsolódáshoz a BÉT által kiadott felhasználói nevet és felhasználói jelszót kell megadni. A kliensek a szerverhez socket-en keresztül, a 192.168.55.1-es IP cím 2400-as IP portján kapcsolódhatnak. Az adatszolgáltatási rendszerhez történı kapcsolódás során a kliensek felhasználói névvel és jelszóval azonosítják magukat. A kapcsolatfelvétel során a szerver ellenırzi a kliens jogosultságait, majd egy dinamikusan kiosztott IP portot (2401-es porttól kezdıdıen) és saját kiszolgáló folyamatot rendel a kapcsolathoz. Sikeres kapcsolatfelvétel után a kliens adatkéréseket intézhet a szerverhez, amelyeket a szerver megfelelı jogosultságok megléte esetén kiszolgál. A szolgáltatások elindítása és leállítása a felhasználó kezdeményezésére történik. A folyamatos információszolgáltatás mellett a felhasználónak lehetısége van a historikus kereskedési adatok idıpont szerinti lekérdezésére is. További szolgáltatásként a BÉT rövid, egysoros üzeneteket küldhet a felhasználók számára a kereskedés közben bekövetkezett eseményekrıl. Az adatszolgáltatói rendszer felhasználói számára egy Windows 95/98/NT operációs rendszerek alatt mőködı kliens oldali adatfogadó alkalmazás került kifejlesztésre, amely az adatok interaktív fogadása, feldolgozása és megjelenítése mellett az adatok
1999. május 21.
Változatszám 2.1.
5/20
Az adatszolgáltatási rendszer kliens felülete
kliens oldali fájlba történı lementésére is képes. A kliens alkalmazás által elıállított fájl szerkezete teljes mértékben megegyezik a korábbi rendszerben fájlmegosztással elérhetı állománnyal. A kliens oldali alkalmazásfejlesztık számára C++ és C nyelvő programozói interfész készült, amely a socket-en lezajló kommunikációt elfedve, könnyen kezelhetı módon teszi lehetıvé a felhasználói kérések megfogalmazását és a kiszolgáló folyamatok adatainak érkeztetését. A programozói interfész használatának ismertetésére egy bemutató alkalmazás készült, amely a szerverhez történı kapcsolódás után a kereskedési adatokat egy kliens oldali fájlba menti. A program forráskódja szabadon felhasználható, UNIX és Windows 95/98/NT rendszerek alatt egyaránt lefordítható.
3. A programozói interfész felépítése A kliens oldali alkalmazásfejlesztık számára két különbözı (C++ és C nyelvő) programozói API került kifejlesztésre. A C nyelvő API nem más, mint a C++ alapú interfész egyetlen kommunikációs kapcsolatra (egy objektumra) történı leszőkítése. Azon fejlesztık számára, akik C és C++ nyelvő programozásban egyaránt jártasak, a C++ nyelvő API használata javasolt, mert áttekinthetıbb, könnyebben és szélesebb körben alkalmazható a C nyelvő megvalósításnál. A C++ API definíciói a visCPPApi.h header fájlban, míg a C API definíciói a visCApi.h header fájlban található. 3.1
A C++ nyelvő programozói interfész
A C++ nyelvő API megvalósításban a szerverrel történı kommunikációt a visInterface osztály végzi. A felhasználói programban a szerverrel való kapcsolattartáshoz egy visInterface típusú objektum deklarálására van szükség, majd a megfelelı vezérlı tagfüggvények segítségével küldhetık kérések a szerver felé. A visInterface osztály a mőködése során bekövetkezı eseményekrıl callback osztályokon keresztül, a megfelelı callback osztály adott eseményhez kötött tagfüggvényének meghívásával értesíti a felhasználót. Egy adott esemény bekövetkezésének figyeléséhez létre kell hozni egy callback osztályból származtatott saját osztályt, majd meg kell írni az eseményt kezelı megfelelı virtuális tagfüggvényt. A programban egy visInterface osztály definíciója: visInterface myInterface;
3.1.1
A kommunikációs kapcsolat kezelésének eszközei
A szerverhez történı kapcsolódást a Connect tagfüggvény végzi: Definíciója: bool Connect( const char* username, const char* password,
1999. május 21.
Változatszám 2.1.
6/20
Az adatszolgáltatási rendszer kliens felülete
const char* IPaddress, int IPport );
Visszatérési értéke sikeres kapcsolatfelvétel esetén true, minden más esetben false. Használata: if(
myInterface.Connect(“vendor1”, ”password”, ”192.168.55.1”, 2400) )
{ printf(“Successfully connected to server \n”); } else { printf(“Could not connect to server\n”); }
A kapcsolat bontását a Disconnect tagfüggvény végzi. Definíciója: void Disconnect();
Az interész kapcsolódási állapotának lekérdezésére szolgál az isConnected() függvény: Definíciója: bool IsConnected();
Visszatérési élı hálózati kapcsolat esetén true, minden más esetben false. Használata: If( myInterface.IsConnected() ) printf(“Still connected !\n”);
3.1.2
A kommunikációs kapcsolat eseményeinek callback osztálya
A kommunikációs kapcsolat eseményeirıl a visInterfaceCallBack osztályon keresztül kaphat értesítést a felhasználó. Definíciója: class visInterfaceCallBack {
1999. május 21.
Változatszám 2.1.
7/20
Az adatszolgáltatási rendszer kliens felülete
public: virtual void ConnectionCallBack(bool isSuccess); virtual void DisconnectCallBack(); };
A visInterfaceCallBack osztályt a visInterface osztály RegisterInterfaceCallBack tagfüggvényével regisztrálhatjuk az adott visInterface objektum számára. Definíciója: void RegisterInterfaceCallBack( visInterfaceCallBack* InterfaceCallBackClass );
A visInterfaceCallBack osztály ConnectionCallBack tagfüggvénye abban ez esetben hívódik meg, ha a visInterface objektum kapcsolódni próbált a szerverhez. A függvény az isSuccess argumentumon keresztül szerez tudomást a kapcsolódás sikerességérıl. Az isSucces argumentum értéke sikeres kapcsolódás esetén true, sikertelen kapcsolódás esetén false. A DisconnectCallback tagfüggvény abban az esetben hívódik meg, ha a szerver számítógéppel korábban kiépült kapcsolat megszőnt. Használata: A visszahívási mechanizmus használatához létre kell hozni egy osztályt, amely a visInterfaceCallBack osztályból származik. Ezen osztály megfelelı eseménykezelı tagfüggvényeinek megírásával kezelhetık le az egyes események.
1999. május 21.
Változatszám 2.1.
8/20
Az adatszolgáltatási rendszer kliens felülete
3.1.3
Példa a kapcsolat felvételére és a callback mechanizmus használatára
class myInterfaceCallBack : public visInterfaceCallBack { public: virtual void ConnectionCallBack(bool isSuccess); virtual void DisconnectCallBack(); }; void myInterfaceCallBack::ConnectionCallBack(bool isSuccess) { if( isSuccess ) printf(“Successfully connected to server \n”); else printf(“Could not connect to server\n”); } void myInterfaceCallBack::DisconnectCallBack() { printf(“Disconnected from server. \n”); }
int main() { myInterfaceCallBack ITFCallBack; visInterface myInterface; myInterface.RegisterInterfaceCallBack(&ITFCallBack); myInterface.Connect(“vendor1”, ”password”, ”192.168.55.1”, 2400); while( /*condition*/) {
1999. május 21.
Változatszám 2.1.
9/20
Az adatszolgáltatási rendszer kliens felülete
/* do something */ } myInterface.Disconnect(); }
1999. május 21.
Változatszám 2.1.
10/20
Az adatszolgáltatási rendszer kliens felülete
3.1.4
A kiszolgáló folyamatok vezérlése
Az alkalmazói program egyes adatkéréseit önálló programszálként futó kiszolgáló folyamatok (service-ek) teljesítik. A kiszolgáló folyamatok a kérés regisztrálását követıen azok megszakításáig egymással párhuzamosan futnak, a szerver számítógéppel való kapcsolattartást automatikusan végzik. A szervertıl kapott adatokat az egyes kiszolgálókhoz tartozó CallBack osztályokon keresztül, visszahívási mechanizmussal adják át. Minden kiszolgáló folyamat regisztrálásakor saját azonosítót kap, amellyel futása szüneteltethetı vagy elindítható, illetve a folyamat véglegesen eltávolítható. Az egyes kiszolgáló folyamatok regisztrációját 2.1.5 fejezet tartalmazza. Egy folyamat futási állapotának lekérdezésére az isServicePaused függvény szolgál. Definíciója: bool isServicePaused( int ServiceIdentifier_in );
A függvény argumentumaként a kiszolgáló folyamat azonosítóját kell megadni. Visszatérési értéke true, amennyiben a kiszolgáló folyamat futása szüneteltetett, false amennyiben a kiszolgáló futása folyamatban van. Egy folyamat futási állapotának szüneteltetésére a ServicePauseOn függvény szolgál. Definíciója: void ServicePauseOn( int ServiceIdentifier_in );
A függvény argumentumaként a kiszolgáló folyamat azonosítóját kell megadni. Egy felfüggesztett futású folyamat elindítására a ServicePauseOff függvény szolgál. Definíciója: void ServicePauseOff( int ServiceIdentifier_in );
A függvény argumentumaként a kiszolgáló folyamat azonosítóját kell megadni. Egy kiszolgáló folyamat végleges eltávolítására a ServiceShutdown függvény szolgál. Definíciója: void ServiceShutdown( int ServiceIdentifier_in );
A függvény argumentumaként a kiszolgáló folyamat azonosítóját kell megadni. 3.1.5
Az adatkérések regisztrálása
Az alkalmazói program egyes adatkéréseihez tartozó kiszolgáló folyamatokat a kapcsolatfelvételt követıen a visInterface objektumban regisztrálni kell. Egy adatfájl lekérdezésére szolgáló folyamat regisztrációját a visInterface osztály RegisterDataService tagfüggvénye végzi. 1999. május 21.
Változatszám 2.1.
11/20
Az adatszolgáltatási rendszer kliens felülete
Definíciója: int RegisterDataService( int& ServiceIdentifier_out, char* Filename, int StartRecord, visDataCallBack* DataCallBackClass );
A függvény argumentumai: ServiceIdentifier_out
referenciaváltozó, melyen keresztül a felhasználói program visszakapja a regisztrált kiszolgáló folyamat azonosítóját
Filename
a lekérdezni kívánt adatfájl neve
StartRecord
az adatfájl lekérdezésének kezdı rekordja
DataCallBackClass
a DataCallBack osztály, amely az adatokat fogadja
A szerver által küldött üzenetek fogadására szolgáló folyamat regisztrációját a visInterface osztály RegisterMessageService tagfüggvénye végzi. Definíciója: int RegisterMessageService( int& ServiceIdentifier_out, visMessageCallBack* MessageCallBackClass );
A függvény argumentumai:
3.1.6
ServiceIdentifier_out
referenciaváltozó, melyen keresztül a felhasználói program visszakapja a regisztrált kiszolgáló folyamat azonosítóját
MessageCallBackClass
a MessageCallBackClass üzeneteket fogadja
osztály,
amely
az
A kiszolgáló folyamatok callback ısosztálya
Az egyes kérések kiszolgáló folyamatai callback osztályokon keresztül értesítik a felhasználót. A kiszolgáló folyamatok vezérlı eseményeinek callback függvényeit a visServiceCallBack osztály tartalmazza. Mivel a kiszolgáló folyamatok callback osztályai a visServiceCallBack osztályból publikus módon származnak, a vezérlés által keltett eseményeket kezelı függvények bármely folyamat callback osztályában
1999. május 21.
Változatszám 2.1.
12/20
Az adatszolgáltatási rendszer kliens felülete
megadhatók. A tagfüggvények az egyes vezérlı függvényeknek felelnek meg. Minden eseménykezelı függvény megkapja az eseményt kiváltó folyamat azonosítóját, így lehetıség van egy callback osztályban több folyamat eseményeinek kezelésére. Definíciója: class visServiceCallBack { public: virtual void ServicePauseOn(int ServiceIdentifier_in); virtual void ServicePauseOff(int ServiceIdentifier_in); virtual void ServiceShutdown(int ServiceIdentifier_in); };
3.1.7
Az adatkérések callback osztálya
Az adatfájlok lekérdezésének kapcsolat eseményeirıl a visDataCallBack osztályon keresztül kaphat értesítést a felhasználó. Definíciója: class visDataCallBack : public visServiceCallBack { public: virtual void DataReceiver( int ServiceIdentifier_in, const char* DataRecord ); virtual void DataServiceCallBack( int ServiceIdentifier_in, int event_code ); };
A beérkezett adatokat a DataReceiver függvény kapja meg. A függvény argumentumai: ServiceIdentifier_in
Az kiszolgáló folyamat azonosítója.
DataRecord
Az adatfájl sorrendben következı adatrekordja.
1999. május 21.
Változatszám 2.1.
13/20
Az adatszolgáltatási rendszer kliens felülete
Az adatrekordok megtalálható.
szerkezetének
leírása
jelen
dokumentum
mellékleteként
Az adatlekérdezés egyéb eseményeirıl a DataServiceCallBack függvény kap értesítést. A függvény argumentumai: ServiceIdentifier_in
Az kiszolgáló folyamat azonosítója.
event_code
A bekövetkezett esemény kódja.
A jelenleg használt eseménykódok:
3.1.8
FileNotFound
Amennyiben a lekérdezésben megadott adatfájl nem található a szerveren.
FileOpened
Amennyiben a lekérdezésben megadott adatfájl sikeresen megnyitásra került.
Az üzenetek fogadására szolgáló folyamat callback osztálya
Üzenetek érkezésérıl a visMessageCallBack osztályon keresztül kaphat értesítést a felhasználó. Definíciója: class visMessageCallBack : public visServiceCallBack { public: virtual void MessageReceiver( int ServiceIdentifier_in, const MessageStructTP* Message ); };
A függvény argumentumai: ServiceIdentifier_in
Az kiszolgáló folyamat azonosítója.
Message
A beérkezett üzenet.
Az üzenet struktúrája: #define DATETIME_LENGTH 6 #define USERNAME_LENGTH 20 #define MESSAGE_LENGTH 80
1999. május 21.
Változatszám 2.1.
14/20
Az adatszolgáltatási rendszer kliens felülete
struct MessageStructTP { char time[DATETIME_LENGTH]; char target[USERNAME_LENGTH]; char message[MESSAGE_LENGTH]; };
3.2
A C nyelvő programozói interfész
A C nyelvő programozói interfész a C++ nyelvő interfész egyetlen kommunikációs kapcsolatra (egy objektumra) történı leszőkítése. A függvények elnevezése és használata megegyezik a C++ interfész visInterface osztályának tagfüggvényeivel. Az események kezelése a callback osztályok tagfüggvényeinek megfelelı callback függvények regisztrálásával tehetı meg. 3.2.1
A kommunikációs kapcsolat kezelésének eszközei
A szerverhez történı kapcsolódást a Connect függvény végzi: Definíciója: int Connect( const char* username, const char* password, const char* IPaddress, int IPport );
Visszatérési értéke sikeres kapcsolatfelvétel esetén 1, minden más esetben 0. Használata: if(
Connect(“vendor1”, ”password”, ”192.168.55.1”, 2400) )
{ printf(“Successfully connected to server \n”); } else { printf(“Could not connect to server\n”);
1999. május 21.
Változatszám 2.1.
15/20
Az adatszolgáltatási rendszer kliens felülete
}
A kapcsolat bontását a Disconnect függvény végzi. Definíciója: void Disconnect();
Az interész kapcsolódási állapotának lekérdezésére szolgál az isConnected() függvény: Definíciója: int IsConnected();
Visszatérési élı hálózati kapcsolat esetén true, minden más esetben false. Használata: If(IsConnected() ) printf(“Still connected !\n”);
3.2.2
A kommunikációs kapcsolat eseményeinek callback függvényei
A kommunikációs kapcsolat eseményeirıl callback függvényeken keresztül kaphat értesítést a felhasználó. Definíciójuk: typedef void ConnectionCallBackFuncTP(int isSuccess); typedef void DisconnectCallBackFuncTP();
A függvények regisztrációjára szolgáló függvények: void RegisterConnectionCallBack( ConnectionCallBackFuncTP* ConnectionCallBackFunction ); void RegisterDisconnectCallBack( DisconnectCallBackFuncTP* DisconnectCallBackFunction );
3.2.3
A kiszolgáló folyamatok vezérlése
Az alkalmazói program egyes adatkéréseit önálló programszálként futó kiszolgáló folyamatok (service-ek) teljesítik. A kiszolgáló folyamatok a kérés regisztrálását követıen azok megszakításáig egymással párhuzamosan futnak, a szerver számítógéppel való kapcsolattartást automatikusan végzik. A szervertıl kapott adatokat az egyes kiszolgálókhoz tartozó CallBack osztályokon keresztül, visszahívási
1999. május 21.
Változatszám 2.1.
16/20
Az adatszolgáltatási rendszer kliens felülete
mechanizmussal adják át. Minden kiszolgáló folyamat regisztrálásakor saját azonosítót kap, amellyel futása szüneteltethetı vagy elindítható, illetve a folyamat véglegesen eltávolítható. Az egyes kiszolgáló folyamatok C nyelvő regisztrációját 2.2.5 fejezet tartalmazza. Egy folyamat futási állapotának lekérdezésére az isServicePaused függvény szolgál. Definíciója: int isServicePaused( int ServiceIdentifier_in );
A függvény argumentumaként a kiszolgáló folyamat azonosítóját kell megadni. Visszatérési értéke 1, amennyiben a kiszolgáló folyamat futása szüneteltetett, 0 amennyiben a kiszolgáló futása folyamatban van. Egy folyamat futási állapotának szüneteltetésére a ServicePauseOn függvény szolgál. Definíciója: void ServicePauseOn( int ServiceIdentifier_in );
A függvény argumentumaként a kiszolgáló folyamat azonosítóját kell megadni. Egy felfüggesztett futású folyamat elindítására a ServicePauseOff függvény szolgál. Definíciója: void ServicePauseOff( int ServiceIdentifier_in );
A függvény argumentumaként a kiszolgáló folyamat azonosítóját kell megadni. Egy kiszolgáló folyamat végleges eltávolítására a ServiceShutdown függvény szolgál. Definíciója: void ServiceShutdown( int ServiceIdentifier_in );
A függvény argumentumaként a kiszolgáló folyamat azonosítóját kell megadni. 3.2.4
A kiszolgáló folyamatok vezérlésének callback függvényei
A kiszolgáló folyamatok vezérlésekor az egyes vezérlı függvényeknek megfelelı callback függvények hívódnak meg. Argumentumuk a kiszolgáló folyamat azonosítója. Definíciójuk: typedef void ServiceIdentifier_in);
ServiceShutdownFuncTP(int
typedef void ServicePauseOnFuncTP(int ServiceIdentifier_in); typedef void ServiceIdentifier_in);
1999. május 21.
ServicePauseOffFuncTP(int
Változatszám 2.1.
17/20
Az adatszolgáltatási rendszer kliens felülete
3.2.5
Az adatkérések regisztrálása
Az alkalmazói program egyes adatkéréseihez tartozó kiszolgáló folyamatokat a kapcsolatfelvételt követıen regisztrálni kell. Egy adatfájl lekérdezésére szolgáló folyamat regisztrációját a RegisterDataService függvény végzi. Definíciója: int RegisterDataService( int* ServiceIdentifier_out, char* Filename, int StartRecord, DataReceiverFuncTP* DataReceiverFunction, DataServiceCallBackFuncTP* DataServiceCallBackFunction, ServiceShutdownFuncTP* ServiceShutdownFunction, ServicePauseOnFuncTP* ServicePauseOnFunction, ServicePauseOffFuncTP* ServicePauseOffFunction );
A függvény argumentumai: ServiceIdentifier_out
pointer változó, melyen keresztül a felhasználói program visszakapja a regisztrált kiszolgáló folyamat azonosítóját
Filename
a lekérdezni kívánt adatfájl neve
StartRecord
az adatfájl lekérdezésének kezdı rekordja
DataReceiverFunction
az adatok fogadását végzı függvény
DataServiceCallBackFunction a folyamat függvény ServiceShutdownFunction
egyéb
eseményeit
kezelı
a folyamat lezárásakor meghívódó függvény
ServicePauseOnFunction a folyamat futásának szüneteltetésekor meghívódó függvény ServicePauseOffFunction a folyamat futásának folytatásakor meghívódó függvény Az adatok fogadását végzı függvény definíciója: typedef void DataReceiverFuncTP( int ServiceIdentifier_in, char* DataRecord
1999. május 21.
Változatszám 2.1.
18/20
Az adatszolgáltatási rendszer kliens felülete
);
A függvény argumentumai: ServiceIdentifier_in
a regisztrált kiszolgáló folyamat azonosítója
DataRecord
az adatfájl sorrendben következı adatrekordja
Az adatlekérdezés egyéb eseményeirıl a DataServiceCallBack függvény kap értesítést. Definíciója: typedef void DataServiceCallBackFuncTP( int ServiceIdentifier_in, int event_code );
A függvény argumentumai: ServiceIdentifier_in
Az kiszolgáló folyamat azonosítója.
event_code
A bekövetkezett esemény kódja.
A jelenleg használt eseménykódok: FileNotFound
Amennyiben a lekérdezésben megadott adatfájl nem található a szerveren.
FileOpened
Amennyiben a lekérdezésben megadott adatfájl sikeresen megnyitásra került.
A szerver által küldött üzenetek fogadására szolgáló folyamat regisztrációját a RegisterMessageService függvény végzi. Definíciója: int RegisterMessageService( int* ServiceIdentifier_out, MessageReceiverFuncTP* MessageReceiverFunction, ServiceShutdownFuncTP* ServiceShutdownFunction, ServicePauseOnFuncTP* ServicePauseOnFunction, ServicePauseOffFuncTP* ServicePauseOffFunction );
A függvény argumentumai: ServiceIdentifier_out
1999. május 21.
pointer változó, melyen keresztül a felhasználói program visszakapja a regisztrált kiszolgáló folyamat azonosítóját
Változatszám 2.1.
19/20
Az adatszolgáltatási rendszer kliens felülete
MessageReceiverFunction
az adatok fogadását végzı függvény
ServiceShutdownFunction
a folyamat lezárásakor meghívódó függvény
ServicePauseOnFunction a folyamat futásának szüneteltetésekor meghívódó függvény ServicePauseOffFunction a folyamat futásának folytatásakor meghívódó függvény Üzenetek érkezésérıl a MessageReceiverFuncTP függvényen keresztül kaphat értesítést a felhasználó. Az üzenetek fogadását végzı függvény definíciója: typedef void MessageReceiverFuncTP( int ServiceIdentifier_in, MessageStructTP* Message );
A függvény argumentumai: ServiceIdentifier_in
Az kiszolgáló folyamat azonosítója.
Message
A beérkezett üzenet.
Az üzenet struktúrája: #define DATETIME_LENGTH 6 #define USERNAME_LENGTH 20 #define MESSAGE_LENGTH 80 struct MessageStructTP { char time[DATETIME_LENGTH]; char target[USERNAME_LENGTH]; char message[MESSAGE_LENGTH]; };
1999. május 21.
Változatszám 2.1.
20/20