TsgcWebSocketClientイベント › OnSendBufferFull

OnSendBufferFull イベント

送信メッセージキューが QueueOptions.MaxQueueSize に達したときに、オーバーフローポリシーが適用される前に発生します。

構文

property OnSendBufferFull: TsgcWSSendBufferFullEvent;
// TsgcWSSendBufferFullEvent = procedure(Connection: TsgcWSConnection; const QueueSize: Integer; var DropMessage: Boolean) of object

デフォルト値

解説

メッセージキューイングが有効で、かつ QueueOptions.MaxQueueSize がゼロより大きい場合にのみ発生します。キューにすでに MaxQueueSize 件のメッセージが保持されている状態で新たなメッセージがキューに追加されようとするたびに、現在の QueueSize を伴ってこのイベントが発生します。DropMessageTrue として渡されます。そのままにすると、QueueOptions.OverflowPolicy が動作を決定します(qopDropOldest はキュー内の最も古いメッセージを破棄し、qopDropNewest は新しいメッセージを破棄し、qopDisconnect は新しいメッセージを破棄して接続を閉じます)。False に設定すると、メッセージをそのまま受け入れ、キューが制限を超えて増加することを許可します。このイベントを使用すると、バックプレッシャーを検出できます。たとえば、プロデューサーを一時停止したり、低速なコンシューマーの状態をログに記録したりできます。

使用例


procedure OnSendBufferFull(Connection: TsgcWSConnection; const QueueSize: Integer;
  var DropMessage: Boolean);
begin
  WriteLn('#send buffer full: ' + IntToStr(QueueSize) + ' messages queued');
end;

イベントに戻る