TsgcWSPServer_WAMPMetody › CallProgressResult

CallProgressResult Metoda

Wysyła pośredni (progresywny) fragment wyniku do wywołującego podczas gdy RPC jest jeszcze uruchomione; oczekiwane są kolejne fragmenty lub ostateczny CallResult.

Składnia

procedure CallProgressResult(const aCallId: String; const aResult: String = '');

Parametry

NazwaTypOpis
aCallIdconst StringIdentyfikator 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.
aResultconst StringCzęś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.

Uwagi

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.

Przykład

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;

Powrót do metod