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フレームのためのハード・アッパー・バインド。 このサイズに成長しても収まるフレームは、実際の位置に永遠にループするのではなく、本物のエラーと再スローンとして扱われます。