Porovnávané verzie

Kľúč

  • Tento riadok sa pridal
  • Riadok je odstránený.
  • Formátovanie sa zmenilo.
Komentár: msolansky: uprava na nove asynchronne rozhranie

...

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 vyexportovať funkcie okrem vlastných externých funkcií vyexportovať aj funkciu ADA_CALL_ROUTER (synchrónne rozhranie) alebo ADA_CALL_ROUTER_REQUEST a ADA_CALL_ROUTER_REGISTER_ANSWER_HANDLERREQUEST2 (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 nachádza upravuje v súbore export.def, priloženom ku knižnici d2extfunc.

...

Volania externých funkcií z ESL sú serializované na úrovni Event handlera, tztzn. 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.

...