TsgcWSPServer_WAMPMethods › CallProgressResult

CallProgressResult Metodo

Invia un risultato intermedio (progressivo) al chiamante mentre l'RPC è ancora in esecuzione; sono previsti ulteriori blocchi o un CallResult finale.

Sintassi

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

Parametri

NomeTipoDescrizione
aCallIdconst StringIdentificatore generato dal client quando la procedura remota è stata invocata. La chiamata rimane in sospeso dopo l'invio di un chunk di avanzamento, quindi lo stesso aCallId viene riutilizzato per ogni chunk aggiuntivo e per il CallResult finale.
aResultconst StringPayload parziale per questo chunk. È consentito qualsiasi valore stringa (numero, testo, frammento JSON, ecc.); il chiamante riceve i chunk nello stesso ordine in cui vengono inviati.

Note

Utilizzare questo metodo quando una singola RPC produce più di un dato (risposte in streaming, risultati paginati, calcoli a lunga esecuzione, ecc.). Ogni invocazione scrive un frame WAMP CALL_PROGRESS_RESULT al chiamante ma, a differenza di CallResult, non rimuove la chiamata dall'elenco in attesa: il server deve infine terminare lo scambio chiamando CallResult (successo) o CallError (errore) con lo stesso aCallId. Se aCallId non corrisponde a una chiamata in attesa, il metodo non fa nulla silenziosamente. Esempio: per una procedura che produce 20 elementi, inviare gli elementi da 1 a 19 con CallProgressResult e l'elemento 20 con CallResult.

Esempio

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;

Torna ai Metodi