TsgcWSPServer_WAMP › Metody › CallProgressResult
Wysyła pośredni (progresywny) fragment wyniku do wywołującego podczas gdy RPC jest jeszcze uruchomione; oczekiwane są kolejne fragmenty lub ostateczny CallResult.
procedure CallProgressResult(const aCallId: String; const aResult: String = '');
| Nazwa | Typ | Opis |
|---|---|---|
aCallId | const String | Identyfikator generowany przez klienta podczas wywołania procedury zdalnej. Wywołanie pozostaje oczekujące po wysłaniu fragmentu postępu, dlatego ten sam aCallId jest używany ponownie dla każdego kolejnego fragmentu oraz dla ostatecznego CallResult. |
aResult | const String | Częściowy ładunek dla tego fragmentu. Dozwolona jest dowolna wartość ciągu znaków (liczba, tekst, fragment JSON itp.); wywołujący otrzymuje fragmenty w tej samej kolejności, w której zostały wysłane. |
Tej metody należy użyć, gdy pojedyncze wywołanie RPC generuje więcej niż jeden fragment danych (odpowiedzi strumieniowe, wyniki stronicowane, długotrwałe obliczenia itp.). Każde wywołanie zapisuje ramkę WAMP CALL_PROGRESS_RESULT do wywołującego, ale w odróżnieniu od CallResult nie usuwa wywołania z listy oczekujących: serwer musi ostatecznie zakończyć wymianę, wywołując CallResult (sukces) lub CallError (błąd) z tym samym aCallId. Jeśli aCallId nie odpowiada żadnemu oczekującemu wywołaniu, metoda nie wykonuje żadnej akcji. Przykład: dla procedury zwracającej 20 elementów należy wysłać elementy 1..19 za pomocą CallProgressResult, a element 20 za pomocą CallResult.
procedure TForm1.sgcWSPServer_WAMP1Call(Connection: TsgcWSConnection;
const CallId, ProcURI: string; Arguments: TStringList);
var
i: Integer;
begin
if ProcURI = 'com.example.stream' then
begin
for i := 1 to 19 do
sgcWSPServer_WAMP1.CallProgressResult(CallId, IntToStr(i));
sgcWSPServer_WAMP1.CallResult(CallId, '20');
end;
end;