TsgcWSPServer_WAMPMétodos › CallProgressResult

CallProgressResult Método

Envia um chunk de resultado intermediário (progressivo) ao chamador enquanto o RPC ainda está em execução; chunks subsequentes ou um CallResult final são esperados.

Sintaxe

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

Parâmetros

NameTypeDescrição
aCallIdconst StringIdentificador gerado pelo cliente quando o procedimento remoto foi invocado. A chamada permanece pendente após o envio de um fragmento de progresso, portanto o mesmo aCallId é reutilizado em cada fragmento adicional e no CallResult final.
aResultconst StringPayload parcial deste chunk. Qualquer valor de string é permitido (número, texto, fragmento JSON, etc.); o chamador recebe os chunks na mesma ordem em que são enviados.

Observações

Utilize este método quando um único RPC produz mais de um item de dados (respostas em streaming, resultados paginados, cálculos de longa duração, etc.). Cada invocação escreve um frame WAMP CALL_PROGRESS_RESULT ao chamador mas, ao contrário de CallResult, não remove a chamada da lista de pendentes: o servidor deve eventualmente finalizar a troca chamando CallResult (sucesso) ou CallError (falha) com o mesmo aCallId. Se aCallId não corresponder a uma chamada pendente, o método silenciosamente não faz nada. Exemplo: para um procedimento que produz 20 itens, envie os itens 1..19 com CallProgressResult e o item 20 com CallResult.

Exemplo

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;

Voltar para Métodos