SbeServer

StockSharp.Server.Sbe

SPE服务器.

继承自: BaseProtocolServer<ClientSbeSession, SbeServerSubscription, SbeServerSettings>

构造函数

SbeServer
public SbeServer(IAuthorization authorization, ITransactionIdStorage transactionIdStorage, string licenseFeatureId, DateTime componentTimestamp, IMessageConverter converter)
sbeServer = SbeServer(authorization, transactionIdStorage, licenseFeatureId, componentTimestamp, converter)

初始化了 & ##SbeServer+#的新实例.

属性

Authorization
public IAuthorization Authorization { get; }
value = sbeServer.Authorization

客户认证.

ComponentTimestamp
public DateTime ComponentTimestamp { get; }
value = sbeServer.ComponentTimestamp

组件时间戳。

Converter
public IMessageConverter Converter { get; }
value = sbeServer.Converter

消息转换器。

LicenseFeatureId
public string LicenseFeatureId { get; }
value = sbeServer.LicenseFeatureId

许可特征 ID 。

SendOutHeartbeats
public bool SendOutHeartbeats { get; set; }
value = sbeServer.SendOutHeartbeats
sbeServer.SendOutHeartbeats = value

通过发送消息的频道发送心跳.

TransactionIdStorage
public ITransactionIdStorage TransactionIdStorage { get; }
value = sbeServer.TransactionIdStorage

方法

ConfigureAcceptedSocket
private void ConfigureAcceptedSocket(TcpClient client)
sbeServer.ConfigureAcceptedSocket(client)

将 TCP KeepAlive 应用到一个接受的客户端套接字。 保持活性探测器可以让NAT/ 防火墙流入保持活性, 并快速地显示死相机 。

CreateSubscription
protected override SbeServerSubscription CreateSubscription(ClientSbeSession session, string requestId, ServerSubscription subscription, MessageTypes type)
result = sbeServer.CreateSubscription(session, requestId, subscription, type)
GetSessionKey
protected override string GetSessionKey(ClientSbeSession session)
result = sbeServer.GetSessionKey(session)
IsStubSubscription
protected override bool IsStubSubscription(SbeServerSubscription subscription)
result = sbeServer.IsStubSubscription(subscription)
NextResponseId
private static string NextResponseId()
result = SbeServer.NextResponseId()

生成一个不会污染 TransactionIdStorage 的独有响应 ID。 防止服务器生成的响应 ID 和客户端提供的 mdReqIds 相撞 。

OnClearListenerState
protected override void OnClearListenerState()
sbeServer.OnClearListenerState()

清除协议特定听众状态(停止听众等).

OnProcess
private IAsyncEnumerable<Message> OnProcess(ClientSbeSession session, ushort templateId, byte[] payload, CancellationToken cancellationToken)
result = sbeServer.OnProcess(session, templateId, payload, cancellationToken)

templateId发送SBE消息

OnStartListeners
protected override void OnStartListeners(CancellationToken cancellationToken)
sbeServer.OnStartListeners(cancellationToken)

Start protocol-specific listeners (TCP, etc.). Add tasks to _backgroundTasks.

ProcessInMessage
protected override void ProcessInMessage(Message message, CancellationToken cancellationToken)
sbeServer.ProcessInMessage(message, cancellationToken)

处理发送到订阅客户端的消息和路径 。

ProcessLogout
protected override void ProcessLogout(ClientSbeSession session)
sbeServer.ProcessLogout(session)
ReadFramedMessageAsync
private static Task<byte[]> ReadFramedMessageAsync(Stream stream, CancellationToken cancellationToken)
result = SbeServer.ReadFramedMessageAsync(stream, cancellationToken)

标准电子框架:读取[4字节长度][负载]。

ScheduleSessionWork
protected override void ScheduleSessionWork(ClientSbeSession session, ServerSubscription subscription, string requestId, Func<ClientSbeSession, string, CancellationToken, ValueTask<bool>> handler)
sbeServer.ScheduleSessionWork(session, subscription, requestId, handler)
WriteFramedAsync
private ValueTask<bool> WriteFramedAsync(ClientSbeSession session, Func<SbeRecordSerializer, byte[], int> serialize, CancellationToken cancellationToken)
result = sbeServer.WriteFramedAsync(session, serialize, cancellationToken)

中央出局写道:将消息序列化为会话写出缓冲(在如此大帧上进行增殖和再试不会被丢出),然后放出帧并发送. 缓冲器可能被Int32}重排,所以在序列化后重新被读取.