Az adatszolgáltatási rendszer kliens felülete



Hasonló dokumentumok
A WINETTOU Távközlési Szolgáltató Korlátolt Felelısségő Társaság. Internet szolgáltatásra vonatkozó Általános Szerzıdéses Feltételek

C++ programozási nyelv Konstruktorok-destruktorok

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

ISA szimulátor objektum-orientált modell (C++)

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

G Data MasterAdmin 9 0 _ 09 _ _ # r_ e p a P ch e T 1

API tervezése mobil környezetbe. gyakorlat

Mobil Telefonon Keresztüli Felügyelet Felhasználói Kézikönyv

A LOGSYS GUI. Fehér Béla Raikovich Tamás, Laczkó Péter BME MIT FPGA laboratórium

SZÁMÍTÓGÉP HÁLÓZATOK BEADANDÓ ESSZÉ. A Windows névfeloldási szolgáltatásai

Számítógép-hálózatok: 4. Labor. TCP kliens. A gyakorlat célja:

Konkurens TCP Szerver

QuickSend. , és SMS küldés program. Felhasználói kézikönyv. Program dokumentáció 2008 JMGM Magyarország Informatikai Kft.

Adatbázis Rendszerek II. 1. SQL programozási felületek 39/1B IT MAN

Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés

1.2. NFS kliens telepítése és beállítása

Budapest Főváros Kormányhivatala. Földmérési, Távérzékelési és Földhivatali Főosztály. Általános Szerződési Feltételek.

OOP és UML Áttekintés

Programozás II gyakorlat. 6. Polimorfizmus

3. Osztályok II. Programozás II

Socket programozás Példák

Felhasználói dokumentáció a teljesítményadó állományok letöltéséhez v1.0

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

Java II. I A Java programozási nyelv alapelemei

Elektronikus közbeszerzés Szlovákiában. Elıadó: Emília Gregorová Szlovák Köztársaság Közbeszerzési Hivatala


JUPI-W integrált beléptetı- és munkaidı nyilvántartó szoftver

Image Processor BarCode Service. Felhasználói és üzemeltetői kézikönyv

Programozás C és C++ -ban

Elosztott rendszerek. Az elıadás. Az elosztott rendszer definíciója. Köztesrétegként felépülı elosztott rendszer

Felhasználó által definiált adattípus

Adatvédelmi nyilatkozat a weboldal látogatói részére

C programozási nyelv Pointerek, tömbök, pointer aritmetika

Kommunikáció. Folyamatok közötti kommunikáció. Minden elosztott rendszer alapja

Bevezetés, a C++ osztályok. Pere László

Operációs rendszerek

Gyors telepítési kézikönyv

e-szignó Online Szolgáltatások - e-számla rendszer

Nagy HF u tmutato 2011/2012 II. fe le v

Programozás II. ATM példa Dr. Iványi Péter

A szükséges új mérıpontok kialakítása, mérık, kommunikációs hálózat, adattovábbító eszközök elhelyezésével.

e-aláírás és az e-fizetés bevezetése a földhivatali szolgáltatásoknál

einvoicing Elektronikus számlázás Ügyfélportál Felhasználói kézikönyv Ügyfélportál V Page 1 of 12

SSL VPN KAPCSOLAT TELEPÍTÉSI ÚTMUTATÓ

PDF DOKUMENTUMOK LÉTREHOZÁSA

DRÉN & VALNER SZOFTVER KFT 4031 Debrecen, Egyetem sugárút 11/a. 1/5. 52/ , 52/ , 30/

A webhelyhez kötődő szoftverek architektúrája

Java Programozás 11. Ea: MVC modell

C programozási nyelv

Chat felhasználói segédlet

Programozás C++ -ban 2007/7

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1

KFKI Unified Messaging Server (UMS) Felhasználói Útmutató

A képernyőre írást igénylő részfeladatok eredményének megjelenítése előtt írja a képernyőre a feladat sorszámát (például: 3. feladat:)!

PTE-PROXY VPN használata, könyvtári adatbázisok elérhetősége távolról

Felhasználói útmutató CVR mobil kliens, ios rendszerhez.

Cekla. Készítette Doxygen Tue Sep :13:44

COMET webalkalmazás fejlesztés. Tóth Ádám Jasmin Media Group

Bevezetés a C++ programozási nyelvbe

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Objektumorientált programozás C# nyelven III.

DCOM Áttekintés. Miskolci Egyetem Általános Informatikai Tanszék. Ficsor Lajos DCOM /1

Netis vezeték nélküli, N típusú, router

Programozás C++ -ban

MÉRY Android Alkalmazás

Verzió: 1.7 Dátum: Elektronikus archiválási útmutató

Technikai tudnivalók a Saxo Trader Letöltéséhez tűzfalon vagy proxy szerveren keresztül

Virtuális függvények (late binding)

Programozás 5. Dr. Iványi Péter

Számítógépes Hálózatok GY 6.hét

Vonalkód olvasó rendszer. Specifikáció Vonalkód olvasó rendszer SoftMaster Kft. [1]

OEP Online jogosultság és TAJ ellenırzés Felhasználói kézikönyv

Gyors üzembe helyezési kézikönyv

Tájékoztató. az Online Számla rendszerben az adatszolgáltatási kötelezettség teljesítésének előfeltételeként szükséges regisztráció folyamatáról


Regionális forduló november 18.

Tájékoztató a kollégiumi internet beállításához

Számítógépes Hálózatok GY 7.hét

21/2010. (V. 4.) EüM rendelet az egészségügyi ágazat honvédelmi feladatairól

KAMIONIRÁNYÍTÓ RENDSZER

Beállítások 1. Töltse be a Planet_NET.pkt állományt a szimulációs programba! A teszthálózat már tartalmazza a vállalat

UNIX: folyamatok kommunikációja

Torna. A torna.csv UTF-8 kódolású állományban soronként egy versenyző eredményeit tároljuk. Az adatokat pontosvessző választja el egymástól.

Programozás I gyakorlat

SZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS. A MySQL adatbáziskezelő PHP folytatás JDBC, ODBC

és az instanceof operátor

A számítási grideket alkotó gépek erısen heterogén környezetében megvalósíthatatlan hogy minden gép ugyanazt a fájlrendszert lássa.

Tájékoztató az Elektronikus Közúti Áruforgalom Ellenırzı Rendszer (EKAER) bevezetésével kapcsolatban ügyfeleink részére

Kommunikáció. 3. előadás

Csak felvételi vizsga: csak záróvizsga: közös vizsga: Mérnök informatikus szak BME Villamosmérnöki és Informatikai Kar január 4.

A kontrolladat-szolgáltatás elkészítése

TERC V.I.P. hardverkulcs regisztráció

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

vbar (Vemsoft banki BAR rendszer)

Pénzügyi Szervezetek Állami Felügyelete. ERA Postaláda szolgáltatás. Felhasználói segédlet

Alap protokollok. NetBT: NetBIOS over TCP/IP: Name, Datagram és Session szolgáltatás.

ViCA. Virtuális Chipkártya Alkalmazás

Könyvtári kölcsönzések kezelése

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

Szkriptnyelvek. 1. UNIX shell

Átírás:

Az adatszolgáltatási rendszer kliens felülete Budapest, 1999. május 21. BÉT projekt

AZ ADATSZOLGÁLTATÁSI RENDSZER KLIENS FELÜLETE AZONOSÍTÁSA A adatszolgáltatási rendszer kliens felülete 20 számozott lapot tartalmaz Készítette: 1999. május 20. Kovács Gábor Jóváhagyta: 1999. május 21. Kollár Dóra A példány sorszáma:. és tulajdonosa: MÓDOSÍTÁSOK JEGYZÉKE Sorsz.: Oldal / fejezet: Változtatás jellege: Kelt: Aláírás: 1. 2. 4. fejezet A rekordformátumok módosítása (nem képezi a dokumentum szerves részét) A dokumentum angol nyelven is elkészült 1999. 05. 21. 1999. 05. 21. 1999. május 21. Változatszám 2.1. 2/20

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 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 3.2 A C nyelvő programozói interfész...15 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 Melléklet: Technikai specifikáció A B C D E F G H 1999. május 21. Változatszám 2.1. 3/20

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

Real-time szerver LOG szerver Központi Nyilvántartás Kapcsolatfelvételi szerver Kommunikációs felület Felhasználói kliens Kereskedési rendszerek Adatfogadó program vendrt_ééééhhnn.dat vendrto_ééééhhnn.dat Kommunikációs szerver Kommunikációs felület Telefon hálózat Kommunikációs felület 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

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: bool Connect( const char* username, const char* password, 1999. május 21. Változatszám 2.1. 6/20

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. void Disconnect( Az interész kapcsolódási állapotának lekérdezésére szolgál az isconnected() függvény: 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ó. class visinterfacecallback 1999. május 21. Változatszám 2.1. 7/20

}; 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. 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

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

} /* do something */ } myinterface.disconnect( 1999. május 21. Változatszám 2.1. 10/20

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. 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. 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. 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. 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

int RegisterDataService( int& ServiceIdentifier_out, char* Filename, int StartRecord, visdatacallback* DataCallBackClass A függvény argumentumai: ServiceIdentifier_out Filename StartRecord DataCallBackClass referenciaváltozó, melyen keresztül a felhasználói program visszakapja a regisztrált kiszolgáló folyamat azonosítóját a lekérdezni kívánt adatfájl neve az adatfájl lekérdezésének kezdı rekordja 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. int RegisterMessageService( int& ServiceIdentifier_out, vismessagecallback* MessageCallBackClass 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 MessageCallBackClass a MessageCallBackClass osztály, amely az üzeneteket fogadja 3.1.6 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

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. 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ó. 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 adatrekordok szerkezetének leírása jelen dokumentum mellékleteként megtalálható. 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 event_code Az kiszolgáló folyamat azonosítója. A bekövetkezett esemény kódja. A jelenleg használt eseménykódok: FileNotFound FileOpened Amennyiben a lekérdezésben megadott adatfájl nem található a szerveren. Amennyiben a lekérdezésben megadott adatfájl sikeresen megnyitásra került. 3.1.8 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ó. class vismessagecallback : public visservicecallback public: virtual void MessageReceiver( int ServiceIdentifier_in, const MessageStructTP* Message }; A függvény argumentumai: ServiceIdentifier_in Message Az kiszolgáló folyamat azonosítója. 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

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: 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

} A kapcsolat bontását a Disconnect függvény végzi. void Disconnect( Az interész kapcsolódási állapotának lekérdezésére szolgál az isconnected() függvény: 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

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. 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. 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. 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. 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 ServiceShutdownFuncTP(int ServiceIdentifier_in typedef void ServicePauseOnFuncTP(int ServiceIdentifier_in typedef void ServicePauseOffFuncTP(int ServiceIdentifier_in 1999. május 21. Változatszám 2.1. 17/20

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. 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 Filename StartRecord DataReceiverFunction pointer változó, melyen keresztül a felhasználói program visszakapja a regisztrált kiszolgáló folyamat azonosítóját a lekérdezni kívánt adatfájl neve az adatfájl lekérdezésének kezdı rekordja az adatok fogadását végzı függvény DataServiceCallBackFunction a folyamat egyéb eseményeit kezelı 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 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

A függvény argumentumai: ServiceIdentifier_in DataRecord a regisztrált kiszolgáló folyamat azonosítója 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. typedef void DataServiceCallBackFuncTP( A függvény argumentumai: ServiceIdentifier_in event_code int ServiceIdentifier_in, int event_code Az kiszolgáló folyamat azonosítója. A bekövetkezett esemény kódja. A jelenleg használt eseménykódok: FileNotFound FileOpened Amennyiben a lekérdezésben megadott adatfájl nem található a szerveren. 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. int RegisterMessageService( int* ServiceIdentifier_out, MessageReceiverFuncTP* MessageReceiverFunction, 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 1999. május 21. Változatszám 2.1. 19/20

MessageReceiverFunction ServiceShutdownFunction az adatok fogadását végzı függvény 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 Message Az kiszolgáló folyamat azonosítója. 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