Základný modul knižnice D2ExtFunc. Obsahuje prototypy funkcií, ktoré je možné volať z ESL. Externé funkcie vytváranej knižnice môžu používať synchrónne alebo asynchrónne rozhranie (prototyp funkcie SyncRoutedFunction alebo AsyncRoutedFunction). Všetky funkcie vytvorenej knižnice však musia používať rovnaké rozhranie - nie je možné kombinovať synchrónne a asynchrónne rozhranie. Na základe zvoleného typu rozhrania je potom potrebné vo výslednej knižnici okrem vlastných externých funkcií vyexportovať aj funkciu ADA_CALL_ROUTER (synchrónne rozhranie) alebo ADA_CALL_ROUTER_REQUEST2 (asynchrónne rozhranie). Implementácia týchto funkcií je vstavaná do knižnice d2extfunc a skrytá pred používateľom knižnice. Zoznam exportovaných funkcií sa upravuje v súbore export.def, priloženom ku knižnici d2extfunc.
Synchrónne vs. asynchrónne rozhranie
Volania externých funkcií z ESL sú serializované na úrovni Event handlera, tzn. jeden Event handler nikdy nevykonáva viac ako jedno volanie do externej funkcie naraz. Preto, ak je pre maximalizáciu výkonu žiadané paralelné spracovanie funkcií v knižnici, je potrebné použiť asynchrónne rozhranie, ktoré v prvotnej obsluhe volania externej funkcie len ošetrí vstupné parametre, reálne spracovanie požiadavky naplánuje na inom vlákne a vráti sa do Event handlera. ESL skript volajúci takto definovanú externú funkciu potom čaká na výsledok spracovania (odoslaný funkciou answer), zároveň však neblokuje ďalšie, paralelne vykonávané ESL skripty na rovnakom Event handleri.
Obsluha udalostí z Event handlera
Modul d2callrouter obsahuje aj funkcie na nastavenie callback funkcií, ktoré sú volané pri inicializácii knižnice externých funkcií (setInitCallback a setInitParamCallback). Týmito funkciami je možné vykonať vlastnú inicializáciu knižnice a použiť parametre, ktoré používa Event handler. Ďalšou udalosťou, ktorú Event handler oznamuje knižnici externých funkcií je ukončenie behu inštancie ESL skriptu (funkcia setDestroyInstanceCallback), ktorej obsluhu je možné využiť najmä na uvoľnenie prostriedkov, ktoré knižnica používa počas celej existencie inštancie skriptu (jeho behu).
Callback volania do Event handlera
Modul d2callrouter taktiež obsahuje funkciu na vyvolanie registrovanej akcie v ESL (funkcia callback) a v prípade použitia asynchrónneho rozhrania funkciu answer na odoslanie výsledku spracovania externej funkcie.
0 komentárov