TsgcWSPServer_WAMPMethods › CallProgressResult

CallProgressResult Methode

Verstuurt een tussentijds (progressief) resultaatfragment naar de aanroeper terwijl de RPC nog wordt uitgevoerd; volgende fragmenten of een definitief CallResult worden verwacht.

Syntaxis

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

Parameters

NaamTypeBeschrijving
aCallIdconst StringIdentifier gegenereerd door de client toen de externe procedure werd aangeroepen. De aanroep blijft in behandeling na het verzenden van een voortgangsdeelstuk, dus dezelfde aCallId wordt hergebruikt voor elk aanvullend deelstuk en voor het definitieve CallResult.
aResultconst StringGedeeltelijke payload voor dit segment. Elke stringwaarde is toegestaan (getal, tekst, JSON-fragment, enz.); de aanroeper ontvangt de segmenten in dezelfde volgorde als ze worden verzonden.

Opmerkingen

Gebruik deze methode wanneer één RPC meer dan één stuk gegevens produceert (streamingresponses, gepagineerde resultaten, langlopende berekeningen, enz.). Elke aanroep schrijft een WAMP CALL_PROGRESS_RESULT-frame naar de aanroeper, maar verwijdert de aanroep, in tegenstelling tot CallResult, niet uit de wachtende lijst: de server moet de uitwisseling uiteindelijk afsluiten door CallResult (geslaagd) of CallError (mislukt) aan te roepen met dezelfde aCallId. Als aCallId niet overeenkomt met een wachtende aanroep, doet de methode niets. Voorbeeld: voor een procedure die 20 items oplevert, verzendt u items 1 t/m 19 met CallProgressResult en item 20 met CallResult.

Voorbeeld

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;

Terug naar methoden