top of page

Wywołania procesu OUX

Zaktualizowano: 15 lip 2022

Programy pisane w technologii OUX mają wbudowaną obsługę wywołań procesu dokonywanych z innego procesu OUX. Dzięki temu można łatwo zaimplementować program będący serwerem procedur i program będący klientem procedur; jak to zostało zrobione w programie current-system-integrator.


Przychodzące wywołania

Każdy program w technologii OUX zawiera procedurę

void
E_flow_Q_process_call_I_func( P data
){
}

Jest ona wykonywana dla przychodzącego wywołania procesu OUX. Jedyny parametr zawiera adres do pamięci współdzielonej, która zawiera dane przekazane przez program wywołujący. Zawartość tej pamięci może być zmodyfikowana przed powrotem z procedury E_flow_Q_process_call_I_func i w ten sposób dane są przekazywane zwrotnie programowi wywołującemu.


Wychodzące wywołania

By wywołać proces innego programu OUX, trzeba utworzyć obiekt process_call:

P data;
I call_id = E_flow_Q_process_call_M( l, &data );

Pierwszy parametr zawiera rozmiar żądanej pamięci współdzielonej pomiędzy procesami, drugi parametr to adres zmiennej, której zostanie przypisany adres tej utworzonej pamięci współdzielonej. Natomiast procedura ta w przypadku niepowodzenia wraca z wartością ~0, a w przeciwnym przypadku – z identyfikatorem obiektu process_call.

Od tego momentu można dowolną liczbę razy wywoływać inny program lub programy OUX, zważając na to, by nie nadpisywały sobie danych w pamięci współdzielonej. Używa się do tego celu procedury

B successful;
E_flow_Q_process_call_I( call_id, server_pid, &successful );

Pierwszy parametr zawiera identyfikator utworzonego obiektu process_call, drugi parametr – identyfikator procesu w systemie operacyjnym przynależący do uruchomionego innego programu OUX, a trzeci – adres zmiennej, której zostanie przypisana wartość boolean powodzenia lub niepowodzenia wykonania wywołania programu OUX. Trzeba tutaj zaznaczyć, że jest to powodzenie lub niepowodzenie wynikające z odebrania przez inny program OUX wywołania, a nie z wykonania czegoś w wyniku tego wywołania. Rezultat wykonania jest na przykład ustawiany w pamięci współdzielonej przez program wywołany.

Jeżeli procedura E_flow_Q_process_call_I wróci z wartością yes, to należy zakończyć pętlę zadania, w którym jest ona wykonywana.

Po zakończeniu jednego lub serii wywołań należy wyrzuć obiekt process_call procedurą

E_flow_Q_process_call_W( call_id );

Ostatnie posty

Zobacz wszystkie
Klient HTTP/1.1 i HTTP/2

Do modułu “base” dodałem podstawową obsługę klienta HTTP/1.1 i HTTP/2, korzystając z szyfrowania TLS zapewnianego przez OpenSSL....

 
 
 

Comentários


©2024 by technologia OUX / język C+. Stworzone przy pomocy Wix.com

bottom of page