TsgcWebSocketClient › イベント › OnSendBufferFull
送信メッセージキューが QueueOptions.MaxQueueSize に達したときに、オーバーフローポリシーが適用される前に発生します。
property OnSendBufferFull: TsgcWSSendBufferFullEvent;
// TsgcWSSendBufferFullEvent = procedure(Connection: TsgcWSConnection; const QueueSize: Integer; var DropMessage: Boolean) of object
—
メッセージキューイングが有効で、かつ QueueOptions.MaxQueueSize がゼロより大きい場合にのみ発生します。キューにすでに MaxQueueSize 件のメッセージが保持されている状態で新たなメッセージがキューに追加されようとするたびに、現在の QueueSize を伴ってこのイベントが発生します。DropMessage は True として渡されます。そのままにすると、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;