TsgcWebTransportStream › Eigenschaften › Session

Session Eigenschaft

Die WebTransport-Sitzung, der dieser Stream gehört.

Syntax

property Session: TsgcWebTransportSession read FSession;

Typ

TsgcWebTransportSession.

Hinweise

Wird vom Konstruktor auf die Sitzung gesetzt, die den Stream erstellt hat. Sie ändert sich nie und ist bei einem Stream, den die Bibliothek Ihnen übergeben hat, niemals nil.

Hinweise

Schreibgeschützt. Ein Rückverweis auf die besitzende Sitzung, nützlich innerhalb eines Stream-Ereignishandlers, in dem die Sitzung oft nicht anderweitig im Gültigkeitsbereich ist. In OnData oder OnClose ist Sender der Stream, und Session führt Sie von dort zur Sitzung, zu ihrer SessionId, ihrem StreamCount oder zu OpenStream, um auf einem neuen Stream zu antworten.

Der Besitz verläuft in die andere Richtung. Die Sitzung besitzt den Stream, nicht umgekehrt. Die Stream-Liste der Sitzung gibt jeden Stream frei, wenn die Sitzung zerstört wird, geben Sie daher niemals einen Stream über diese Referenz frei und halten Sie niemals einen Stream-Zeiger über seine Sitzung hinaus am Leben. Das Lesen von Session verlängert die Lebensdauer von nichts.

Alle Streams in einer Sitzung teilen sich eine QUIC-Verbindung, daher ist Session auch der Weg, um zu prüfen, ob zwei Streams zusammengehören: Vergleichen Sie die Referenzen oder vergleichen Sie Session.SessionId.

Beispiel


procedure TfrmServer.OnWTStreamData(Sender: TObject; const aData: TBytes);
var
  oStream: TsgcWebTransportStream;
  oSession: TsgcWebTransportSession;
begin
  if not (Sender is TsgcWebTransportStream) then
    Exit;
  oStream := TsgcWebTransportStream(Sender);

  // The session is not in scope here, so reach it through the stream
  oSession := oStream.Session;
  memoLog.Lines.Add(Format('session %d, stream %d, %d bytes',
    [oSession.SessionId, oStream.StreamId, Length(aData)]));

  // Answer on a NEW unidirectional stream in the same session, rather than
  // on the stream the request arrived on
  with oSession.OpenStream(True) do
    WriteData('ack');
end;

Zurück zu Properties