TsgcWSPServer_WAMP › Methods › CallProgressResult
Verstuurt een tussentijds (progressief) resultaatfragment naar de aanroeper terwijl de RPC nog wordt uitgevoerd; volgende fragmenten of een definitief CallResult worden verwacht.
procedure CallProgressResult(const aCallId: String; const aResult: String = '');
| Naam | Type | Beschrijving |
|---|---|---|
aCallId | const String | Identifier 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. |
aResult | const String | Gedeeltelijke 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. |
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.
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;