TsgcQUICClient › Methoden › EnableMultiStream

EnableMultiStream Methode

Schaltet die aktive Verbindung in den Multi-Stream-Modus, sodass vom Peer geöffnete Streams eingesammelt werden und OnQUICStreamData ausgelöst wird.

Syntax

procedure EnableMultiStream;

Hinweise

Standardmäßig hält ein QUIC-Client einen einzigen Standard-Stream und besitzt überhaupt keinen Lesepfad. EnableMultiStream kehrt das um: Es wendet die OpenSSL-Annahmerichtlinie für eingehende Streams auf die Verbindung an und verdrahtet den Stream-Daten-Callback, sodass vom Peer geöffnete Streams eingesammelt werden und jeder gelesene Byteblock über OnQUICStreamData gemeldet wird. Der Aufruf ist die Voraussetzung dafür, überhaupt etwas zu empfangen, und dafür, OpenStream und WriteStreamData nutzbar zu machen.

Rufen Sie sie nach dem Aufbau der Verbindung auf, zum Beispiel im Handler OnQUICConnect oder direkt nach einem erfolgreichen Connect. Sie wird stillschweigend ignoriert, wenn keine aktive Verbindung besteht, wenn SSLQUIC False ist oder wenn der zugrunde liegende UDP-Client noch nicht erstellt wurde, ein zu früher Aufruf bewirkt also nichts und meldet keinen Fehler.

Die Methode funktioniert auf beiden QUIC-Engines. Auf der integrierten OpenSSL-QUIC-Engine (qmBuiltin) verwendet sie die OpenSSL-Stream-API, und auf der sgc-Engine (qmCustom) werden die Streams vom Pascal-QUIC-Stack behandelt. Wie die Engine ausgewählt wird, beschreibt TsgcQUICClient.

Dieses Member ist derzeit nur in der Delphi/C++Builder-Implementierung verfügbar. Die .NET-Implementierung öffnet genau einen bidirektionalen Stream pro Verbindung und stellt keine Multi-Stream-API bereit.

Beispiel


oClient.OnQUICConnect := OnQUICConnectEvent;
oClient.OnQUICStreamData := OnQUICStreamDataEvent;
oClient.Connect;

procedure OnQUICConnectEvent(Sender: TObject; const Connection: TsgcQUICConnection);
var
  oStream: TsgcQUICClientStream;
begin
  TsgcQUICClient(Sender).EnableMultiStream;

  oStream := TsgcQUICClient(Sender).OpenStream;
  if Assigned(oStream) then
    TsgcQUICClient(Sender).WriteStreamData(oStream,
      TEncoding.UTF8.GetBytes('Hello QUIC'));
end;

Zurück zu Methoden