SbeWriteBuffer

StockSharp.Server.Sbe

帮助将 SBE 信件序列化为每会话的写出缓冲器,在外出时会增长,而不是丢弃信件并断开客户端.

方法

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

返回至少长于字节的缓冲。 如果已有缓冲已经足够大, 则返回时不变; 否则, 将分配一个新的缓冲, 将覆盖到 {MaxWriteBufferSize} 。

buffer
当前缓冲( 可能是无效的) 。
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 框架。 即使长大到这个大小, 也不适合这样的框架, 会被视作真正的错误和重推, 而不是在再分配上永远循环 。