TsgcWebTransportSession › Eigenschaften › StreamCount
Anzahl der TsgcWebTransportStream-Objekte, die derzeit in dieser Sitzung geöffnet sind.
property StreamCount: Integer read GetStreamCount;
Integer (int in C++Builder und C#).
0 für eine neu erstellte Sitzung, bevor ein Stream geöffnet wird.
Schreibgeschützt. StreamCount gibt die Größe der internen Liste offener Streams der Sitzung zurück. Ein Stream gelangt in diese Liste, wenn OpenStream ihn lokal erzeugt oder wenn AddIncomingStream einen vom Peer geöffneten Stream registriert.
Es ist eine Live-Anzeige der offenen Streams. Der Aufruf von Close auf einem Stream meldet ihn von der Sitzung ab, bevor dessen OnClose-Ereignis ausgelöst wird, StreamCount sinkt daher, sobald der Stream geschlossen wird. Das Schließen der Sitzung mit Close schließt jeden darauf noch offenen Stream, StreamCount fällt daher auf 0. Sie müssen RemoveStream nicht selbst aufrufen, das Close eines Streams erledigt das bereits.
Lesen Sie sie, wann immer Sie wissen müssen, wie viele Streams die Sitzung gerade überträgt, für Diagnosen oder um einen außer Kontrolle geratenen Peer zu erkennen. Ein geschlossenes Stream-Objekt bleibt bestehen, bis die Sitzung freigegeben wird, jede von Ihnen behaltene Referenz darauf bleibt also gültig, es wird hier aber nicht mehr mitgezählt.
Das Lesen von StreamCount ist thread-sicher: Die Stream-Liste wird durch eine kritische Sektion geschützt.
procedure TfrmServer.OnWTStream(Sender: TObject;
const aStream: TsgcWebTransportStream);
var
oSession: TsgcWebTransportSession;
begin
oSession := aStream.Session;
memoLog.Lines.Add(Format('stream %d registered, session now holds %d',
[aStream.StreamId, oSession.StreamCount]));
// A crude guard against a peer that opens streams without limit.
if oSession.StreamCount > 1000 then
oSession.Close;
aStream.OnData := OnWTStreamData;
end;