TsgcQUICClient › Ereignisse › OnQUICDisconnect

OnQUICDisconnect Ereignis

Wird ausgelöst, wenn die QUIC-Verbindung geschlossen wurde, und meldet den Close-Code und den Grund.

Syntax

property OnQUICDisconnect: TsgcQUICDisconnectEvent;

// TsgcQUICDisconnectEvent = procedure(Sender: TObject;
//   const Connection: TsgcQUICConnection; Code: Int64; const Reason: string) of object;

Parameter

NameTypBeschreibung
SenderTObjectDie TsgcQUICClient-Instanz, die das Ereignis ausgelöst hat.
Connectionconst TsgcQUICConnectionDie Verbindung, die geschlossen wurde. In .NET ist der Parameter eine TsgcQUICClientConnection und kann null sein.
CodeInt64QUIC-Verbindungsschließcode. 0 bedeutet NO_ERROR, ein sauberes Schließen. Werte ungleich null sind die Transport- oder Anwendungsfehlercodes aus RFC 9000 Abschnitt 20, zum Beispiel 1 INTERNAL_ERROR, 2 CONNECTION_REFUSED, 3 FLOW_CONTROL_ERROR sowie 0x0100 und höher CRYPTO_ERROR. Er ist 0, wenn die lokale Anwendung das Schließen angefordert hat.
Reasonconst stringMenschenlesbarer Grundtext, der mit der Schließung gemeldet wird, leer, wenn keiner angegeben wurde.

Hinweise

OnQUICDisconnect wird ausgelöst, nachdem die Verbindung geschlossen wurde, unabhängig davon, ob das Schließen lokal über Disconnect oder Active angefordert wurde, vom Server angefordert wurde oder durch einen Transportfehler verursacht wurde. Prüfen Sie Code, um ein sauberes Herunterfahren von einem Fehler zu unterscheiden und zu entscheiden, ob neu verbunden werden soll. Wenn das Schließen lokal eingeleitet wird, meldet die Komponente Code als 0 und Reason als leere Zeichenfolge.

Das Ereignis wird aus dem Lese-Thread der Verbindung ausgelöst. Die Komponente setzt NotifyEvents auf neNoSync, der Handler läuft also nicht im Haupt-Thread: Greifen Sie niemals direkt aus ihm auf VCL- oder FMX-Steuerelemente zu, marshallen Sie stattdessen zum Haupt-Thread.

Geben Sie den Parameter Connection nicht frei und halten Sie keine Referenz darauf über den Handler hinaus, die Komponente baut ihn im Rahmen der Trennung ab.

Beispiel


oClient.OnQUICDisconnect := OnQUICDisconnectEvent;

procedure OnQUICDisconnectEvent(Sender: TObject; const Connection: TsgcQUICConnection;
  Code: Int64; const Reason: string);
begin
  if Code = 0 then
    Log('QUIC closed cleanly')
  else
    Log(Format('QUIC closed, code %d: %s', [Code, Reason]));
end;

Zurück zu Ereignissen