BaseProtocolServer

StockSharp.Server.Core

Base class for protocol servers (FIX, SBE, etc.). Contains shared infrastructure: lifecycle, sessions, subscriptions, message channels, background tasks.

Inherits: BaseLogReceiver

Implements: IProtocolServer, ILogReceiver, ILogSource, IDisposable

Constructors

BaseProtocolServer(T)

Initializes a new instance.

settings
Server settings.

Properties

LoginRateLimiter : LoginRateLimiter

Rate limiter for login attempts (shared across all listeners).

Settings : T

Settings.

State : ChannelStates

Gets the underlying state storage.

Methods

AddSubscription(ServerSubscription)

Add subscription.

subscription
Subscription.
ClearState()

Clear all state: listeners, sessions, subscriptions.

Convert(string) : string

Convert text to latin if configured.

CreateSubscription(T, string, ServerSubscription, MessageTypes) : T

Create a subscription info instance.

Disconnect(IMessageListenerSession)

Disconnect session.

session
Session.
DisposeManaged()

Release resources.

EnqueueMessage(T, string, Func<T, T, string, CancellationToken, ValueTask>, CancellationToken)

Enqueue message for a session with request ID.

EnqueueMessage(T, T, string, Func<T, T, string, CancellationToken, ValueTask<bool>>, CancellationToken)

Core enqueue: schedule work on a client session.

EnqueueMessage(T[], Func<T, T, string, CancellationToken, ValueTask>, CancellationToken)

Enqueue message for multiple subscribers.

EnqueueMessage(T[], Func<T, T, string, CancellationToken, ValueTask<bool>>, CancellationToken)

Enqueue message for multiple subscribers (with bool result).

EnqueueMessage(T, Func<T, T, string, CancellationToken, ValueTask>, CancellationToken)

Enqueue message for a single subscription.

EnqueueMessage(T, Func<T, T, string, CancellationToken, ValueTask<bool>>, CancellationToken)

Enqueue message for a single subscription (with bool result).

EnqueueMessage(T, Func<T, T, string, CancellationToken, ValueTask>, CancellationToken)

Enqueue message for a session (no request ID).

GetSessionKey(T) : string

Get the key used to group client sessions (e.g. SenderCompId).

GetSubscriptions(IMessageListenerSession) : IEnumerable<ServerSubscription>

Get subscription for the specified session.

session
Session.

Returns: Subscriptions.

HasSubscriptions(DataType, SecurityId) : bool

Are there subscribers.

IsStubSubscription(T) : bool

Check if subscription is a stub (placeholder).

Load(SettingsStorage)

Load settings.

storage
Settings storage.
OnClearListenerState()

Clear protocol-specific listener state (stop listeners, etc.).

OnStartListeners(CancellationToken)

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

ProcessInMessage(Message, CancellationToken)

Process an incoming message and route to subscribed clients.

ProcessLogout(T)

Process client logout/disconnect.

RaiseNewOutMessage(IMessageListenerSession, Message)

Write outgoing message to channel.

RaiseSessionConnected(IMessageListenerSession)

Raise session connected event.

RaiseSessionDisconnected(IMessageListenerSession)

Raise session disconnected event.

RemoveSubscription(ServerSubscription) : bool

Remove subscription.

subscription
Subscription.

Returns: if subscription was found, otherwise .

Resume(ServerSubscription)

Resume subscription.

subscription
Subscription.

Returns: if subscription was found, otherwise .

Resume(IMessageListenerSession)

Resume session.

session
Session.
RunAsync(CancellationToken) : IAsyncEnumerable<ValueTuple<IMessageListenerSession, Message>>

Run async message processing and return outgoing messages as IAsyncEnumerable. Opens server at start and closes at end.

Save(SettingsStorage)

Save settings.

storage
Settings storage.
ScheduleSessionWork(T, ServerSubscription, string, Func<T, string, CancellationToken, ValueTask<bool>>)

Schedule work on a client session's outgoing queue.

SendInMessage(Message) : bool

Send incoming message to server for processing and routing to clients.

StartServer(CancellationToken)

Start the server: initialize state, start listeners and background tasks.

StopServer()

Stop the server: cancel tasks, complete channels, clear state.

Suspend(IMessageListenerSession)

Suspend session.

session
Session.
Suspend(ServerSubscription)

Suspend subscription.

subscription
Subscription.

Returns: if subscription was found, otherwise .

Events

SessionConnected : Action<IMessageListenerSession>

Session connected event.

SessionDisconnected : Action<IMessageListenerSession>

Session disconnected event.

StateChanged : Action

State change event.

SubscriptionChanged : Action<ServerSubscription>

Client subscription changed event.

Fields

_backgroundTasks : List<Task>

Background tasks (accept clients, process messages, etc.).

_cancellationRequests : SynchronizedSet<long>

Pending order cancellation request transaction IDs.

_changedSubscriptions : SynchronizedSet<ServerSubscription>

Changed subscriptions pending notification.

_clientSessions : CachedSynchronizedDictionary<string, CachedSynchronizedList<T>>

Client sessions grouped by session key (e.g. SenderCompId).

_incomingMessages : Channel<Message>

Incoming messages channel.

_outgoingMessages : Channel<ValueTuple<IMessageListenerSession, Message>>

Outgoing messages channel (session + message pairs).

_subscriptions : SubscriptionHolder<T, T>

Subscription holder.