SbeWriteBuffer
Помощники для сериализации сообщения SBE в буфер записи для каждого сеанса, который увеличивается при переполнении вместо удаления сообщения и отключения клиента.
Методы
public static byte[] Grow(byte[] buffer, int minSize)
result = SbeWriteBuffer.Grow(buffer, minSize)
Возвращает буфер длиной не менее байт. Если существующий буфер уже достаточно велик, он возвращается без изменений; в противном случае новый буфер выделяется путем удвоения емкости, пока он не покроет , ограниченный MaxWriteBufferSize.
- buffer
- Текущий буфер (может быть нулевым).
- minSize
- Минимально необходимый размер в байтах.
Возвращает: Буфер, длина которого не менее .
private static bool IsOverflow(Exception ex, int currentSize, int requiredSize)
result = SbeWriteBuffer.IsOverflow(ex, currentSize, requiredSize)
Распознает исключения переполнения диапазона, выдаваемые сериализатором SBE, и вычисляет целевой размер для увеличения. Выделенный SbeBufferTooSmallException предоставляет точный размер; общие переполнения интервала возвращаются к удвоению.
public static int Serialize(ClientSbeSession session, Func<SbeRecordSerializer, byte[], int> serialize)
result = SbeWriteBuffer.Serialize(session, serialize)
Сериализует сообщение в буфер записи сеанса, увеличивая буфер и повторяя попытку при переполнении. Возвращает количество записанных байт. Буфер (возможно, перераспределенный) доступен через WriteBuffer.
- session
- Целевой сеанс, для которого используется буфер записи.
- serialize
- Делегат сериализации: записывает в буфер, возвращает записанную длину.
Возвращает: Количество байтов, записанных в буфер сеанса.
Поля
public const int InitialWriteBufferSize
value = SbeWriteBuffer.InitialWriteBufferSize
Начальный размер буфера записи сеанса по умолчанию.
public const int MaxWriteBufferSize
value = SbeWriteBuffer.MaxWriteBufferSize
Жесткая верхняя граница для одного кадра SBE. Кадр, который не помещается даже после увеличения до этого размера, рассматривается как настоящая ошибка и создается повторно, а не зацикливается при перераспределении.