SbeWriteBuffer

StockSharp.Server.Sbe

Helfer zum Serialisieren einer SBE-Nachricht in einen Schreibpuffer pro Sitzung, der beim Überlaufen wächst, anstatt die Nachricht fallen zu lassen und den Client zu trennen.

Methoden

Grow
public static byte[] Grow(byte[] buffer, int minSize)
result = SbeWriteBuffer.Grow(buffer, minSize)

Gibt einen Puffer von mindestens Bytes Länge zurück. Wenn der vorhandene Puffer bereits groß genug ist, wird er unverändert zurückgegeben; andernfalls wird ein neuer Puffer durch Verdoppelung der Kapazität zugewiesen, bis er abgedeckt ist, begrenzt auf MaxWriteBufferSize.

buffer
Aktueller Puffer (kann null sein).
minSize
Mindestanforderungen an die Größe in Bytes.

Rückgabe: Ein Puffer, dessen Länge mindestens ist.

IsOverflow
private static bool IsOverflow(Exception ex, int currentSize, int requiredSize)
result = SbeWriteBuffer.IsOverflow(ex, currentSize, requiredSize)

Erkennt die Span-Overflow-Ausnahmen, die vom SBE-Serialisierer ausgelöst werden, und berechnet eine Zielgröße, zu der man wachsen kann. Ein dediziertes SbeBufferTooSmallException liefert eine genaue Größe; generische Span-Overflows fallen auf die Verdopplung zurück.

Serialize
public static int Serialize(ClientSbeSession session, Func<SbeRecordSerializer, byte[], int> serialize)
result = SbeWriteBuffer.Serialize(session, serialize)

Serialisiert eine Nachricht in den Session-Schreibpuffer, vergrößert den Puffer und versucht erneut, wenn Überlauf ist, gibt die Anzahl der geschriebenen Bytes zurück. Der (möglicherweise neu zugewiesene) Puffer ist verfügbar unter WriteBuffer.

session
Zielsitzung, deren Schreibpuffer verwendet wird.
serialize
Serialize Delegate: Schreibt in den Puffer, gibt die geschriebene Länge zurück.

Rückgabe: Anzahl der in den Session-Buffer geschriebenen Bytes.

Felder

InitialWriteBufferSize
public const int InitialWriteBufferSize
value = SbeWriteBuffer.InitialWriteBufferSize

Standardmäßige Anfangsgröße eines Session Write Buffers.

MaxWriteBufferSize
public const int MaxWriteBufferSize
value = SbeWriteBuffer.MaxWriteBufferSize

Harte Obergrenze für einen einzelnen SBE-Rahmen: Ein Rahmen, der auch nach dem Wachstum auf diese Größe nicht passt, wird als echter Fehler behandelt und neu geworfen, anstatt bei der Neuzuweisung für immer einen Schleifenlauf zu durchlaufen.