SbeServer
StockSharp.Server.Sbe
SBEサーバ
継承元: 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 の新規インスタンスを初期化します。
プロパティ
ComponentTimestamp
public DateTime ComponentTimestamp { get; }
value = sbeServer.ComponentTimestamp
コンポーネントタイムスタンプ。
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に送ってください。
OnStartListeners
protected override void OnStartListeners(CancellationToken cancellationToken)
sbeServer.OnStartListeners(cancellationToken)
プロトコル固有のリスナー(TCPなど)を開始します。_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)
SBE の framing: [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}によって割り当てられる可能性があるため、シリアライズ後に再読み込みします。