SbeWriteBuffer
Ayudantes para serializar un mensaje SBE en un buffer de escritura por sesión que crece en el flujo en lugar de dejar caer el mensaje y desconectar al cliente.
Métodos
public static byte[] Grow(byte[] buffer, int minSize)
result = SbeWriteBuffer.Grow(buffer, minSize)
Devuelve un búfer al menos por bytes de largo. Si el búfer existente ya es suficientemente grande, se devuelve sin cambios; de lo contrario, se asigna un nuevo búfer por capacidad de duplicación hasta que cubre, capped a MaxWriteBufferSize.
- buffer
- Buffer actual (puede ser nulo).
- minSize
- Tamaño mínimo requerido en bytes.
Devuelve: Un búfer cuya longitud es al menos .
private static bool IsOverflow(Exception ex, int currentSize, int requiredSize)
result = SbeWriteBuffer.IsOverflow(ex, currentSize, requiredSize)
Reconoce las excepciones de flujo de cobertura lanzadas por el serializador SBE y calcula un tamaño de destino para crecer. A dedicado SbeBufferTooSmallException proporciona un tamaño exacto; los flujos genéricos de los lazos caen de nuevo a duplicar.
public static int Serialize(ClientSbeSession session, Func<SbeRecordSerializer, byte[], int> serialize)
result = SbeWriteBuffer.Serialize(session, serialize)
Serializa un mensaje en la sesión escribir buffer, creciendo el búfer y retrigiendo sobre el flujo. Devuelve el número de bytes escritos. El búfer (posiblemente reasignado) está disponible a través de WriteBuffer@.
- session
- Sesión de blanco cuyo búfer de escritura se utiliza.
- serialize
- Delegado de serie: escribe en el búfer, devuelve la longitud escrita.
Devuelve: Número de bytes escritos en el búfer de sesión.
Campos
public const int InitialWriteBufferSize
value = SbeWriteBuffer.InitialWriteBufferSize
Tamaño inicial predeterminado de una sesión de escribir buffer.
public const int MaxWriteBufferSize
value = SbeWriteBuffer.MaxWriteBufferSize
Un marco que no cabe incluso después de crecer a este tamaño se trata como un error genuino y un re-thrown, en lugar de bucle para siempre en la reasignación.