SbeWriteBuffer
StockSharp.Server.Sbe
SBE メッセージをセッションごとに書き込むためのヘルプャーは、メッセージのドロップやクライアントの切断ではなく、オーバーフロー上に成長するバッファを記述します。
メソッド
Grow
public static byte[] Grow(byte[] buffer, int minSize)
result = SbeWriteBuffer.Grow(buffer, minSize)
バッファを少なくともバイト長に戻します。 既存のバッファがすでに十分に大きい場合は、変更されていないまま返されます。 それ以外の場合は、新しいバッファは、カバーされるまで、倍増容量によって割り当てられ、MaxWriteBufferSizeにキャップされます。
- buffer
- 現在のバッファ(null の場合)。
- minSize
- バイト単位で最小限の必要サイズ。
戻り値: バッファは、長さが少なくともある。
IsOverflow
private static bool IsOverflow(Exception ex, int currentSize, int requiredSize)
result = SbeWriteBuffer.IsOverflow(ex, currentSize, requiredSize)
SBE のシリアライズでスローされたスパンオーバーフロー例外を認識し、ターゲットサイズを算出します。SbeBufferTooSmallException専用で、正確なサイズを保証します。一般的なスパンオーバーフローは、倍増します。
Serialize
public static int Serialize(ClientSbeSession session, Func<SbeRecordSerializer, byte[], int> serialize)
result = SbeWriteBuffer.Serialize(session, serialize)
セッションの書き込みバッファにメッセージをシリアライズし、バッファを成長させ、オーバーフローに再試行します。 書き込みされたバイト数を返します。 (おそらく割り当てられた) バッファはWriteBufferで利用できます。
- session
- バッファを記述するターゲットセッション。
- serialize
- デリゲートをシリアライズ: バッファに書き込み、書き込み長さを返します。
戻り値: セッションバッファに記述されたバイト数。
フィールド
InitialWriteBufferSize
public const int InitialWriteBufferSize
value = SbeWriteBuffer.InitialWriteBufferSize
セッションの初期サイズはバッファを書き込みます。
MaxWriteBufferSize
public const int MaxWriteBufferSize
value = SbeWriteBuffer.MaxWriteBufferSize
単一のSBEフレームのためのハード・アッパー・バインド。 このサイズに成長しても収まるフレームは、実際の位置に永遠にループするのではなく、本物のエラーと再スローンとして扱われます。