SbeServer
Servidor SBE.
Hereda de: BaseProtocolServer<ClientSbeSession, SbeServerSubscription, SbeServerSettings>
Constructores
public SbeServer(IAuthorization authorization, ITransactionIdStorage transactionIdStorage, string licenseFeatureId, DateTime componentTimestamp, IMessageConverter converter)
sbeServer = SbeServer(authorization, transactionIdStorage, licenseFeatureId, componentTimestamp, converter)
Inicia una nueva instancia de la SbeServer.
Propiedades
public IAuthorization Authorization { get; }
value = sbeServer.Authorization
La autenticación del cliente.
public DateTime ComponentTimestamp { get; }
value = sbeServer.ComponentTimestamp
Timetamp de componente.
public IMessageConverter Converter { get; }
value = sbeServer.Converter
Conversor de mensajes.
public string LicenseFeatureId { get; }
value = sbeServer.LicenseFeatureId
Función de licencia id.
public bool SendOutHeartbeats { get; set; }
value = sbeServer.SendOutHeartbeats
sbeServer.SendOutHeartbeats = value
Envía latidos cardíacos a través de canales de mensajes salientes.
public ITransactionIdStorage TransactionIdStorage { get; }
value = sbeServer.TransactionIdStorage
Métodos
private void ConfigureAcceptedSocket(TcpClient client)
sbeServer.ConfigureAcceptedSocket(client)
Aplicar TCP KeepAlive a una toma de cliente aceptada. Las sondas de mantenimiento mantienen vivas las entradas de flujo NAT/firewall y superficies muertas rápidamente.
protected override SbeServerSubscription CreateSubscription(ClientSbeSession session, string requestId, ServerSubscription subscription, MessageTypes type)
result = sbeServer.CreateSubscription(session, requestId, subscription, type)
protected override string GetSessionKey(ClientSbeSession session)
result = sbeServer.GetSessionKey(session)
protected override bool IsStubSubscription(SbeServerSubscription subscription)
result = sbeServer.IsStubSubscription(subscription)
private static string NextResponseId()
result = SbeServer.NextResponseId()
Generar un ID de respuesta único que NO contamina TransactionIdStorage@. Evita la colisión entre ID de respuesta generada por servidores y los IDs de respuesta proporcionados por cliente mdReqIds@.
protected override void OnClearListenerState()
sbeServer.OnClearListenerState()
Estado de escucha específico del protocolo claro (detener a los oyentes, etc.).
private IAsyncEnumerable<Message> OnProcess(ClientSbeSession session, ushort templateId, byte[] payload, CancellationToken cancellationToken)
result = sbeServer.OnProcess(session, templateId, payload, cancellationToken)
Mensaje de la SBE entrando por templateId@.
protected override void OnStartListeners(CancellationToken cancellationToken)
sbeServer.OnStartListeners(cancellationToken)
Comience los oyentes específicos del protocolo (TCP, etc.) Agregue tareas a _backgroundTasks.
protected override void ProcessInMessage(Message message, CancellationToken cancellationToken)
sbeServer.ProcessInMessage(message, cancellationToken)
Procesar un mensaje entrante y una ruta para clientes suscritos.
protected override void ProcessLogout(ClientSbeSession session)
sbeServer.ProcessLogout(session)
private static Task<byte[]> ReadFramedMessageAsync(Stream stream, CancellationToken cancellationToken)
result = SbeServer.ReadFramedMessageAsync(stream, cancellationToken)
Framing SBE: lea [longitud de 4 bytes][payload].
protected override void ScheduleSessionWork(ClientSbeSession session, ServerSubscription subscription, string requestId, Func<ClientSbeSession, string, CancellationToken, ValueTask<bool>> handler)
sbeServer.ScheduleSessionWork(session, subscription, requestId, handler)
private ValueTask<bool> WriteFramedAsync(ClientSbeSession session, Func<SbeRecordSerializer, byte[], int> serialize, CancellationToken cancellationToken)
result = sbeServer.WriteFramedAsync(session, serialize, cancellationToken)
Carril de escritura de salida central: serializar el mensaje en la sesión escribir buffer (crecer y volver a la intrusión en el desbordamiento de los marcos tan grandes no se desploma), luego enmarcar y enviarlo. El búfer puede ser reasignado por Int32}), por lo que es releído después de la serialización.