/// <summary> /// Initializes a new instance of the <see cref="RingMasterServer"/> class. /// </summary> /// <param name="protocol">Protocol used for communication</param> /// <param name="instrumentation">Instrumentation consumer</param> /// <param name="cancellationToken">Token to observe for cancellation signal</param> public RingMasterServer(ICommunicationProtocol protocol, IRingMasterServerInstrumentation instrumentation, CancellationToken cancellationToken) { this.protocol = protocol ?? throw new ArgumentNullException(nameof(protocol)); this.instrumentation = instrumentation; this.cancellationToken = cancellationToken; QueuedWorkItemPool.Default.Initialize(Environment.ProcessorCount * 2, cancellationToken); }
/// <summary> /// Initializes a new instance of the <see cref="Session"/> class. /// </summary> /// <param name="server">Ring Master server object</param> /// <param name="sessionId">Session ID</param> /// <param name="onInitSession">Callback when the session is initialized</param> /// <param name="connection">Secure Transport connection object</param> /// <param name="protocol">Protocol object for sending/receiving responses</param> /// <param name="instrumentation">Instrumentation object</param> public Session( RingMasterServer server, ulong sessionId, Func<RequestInit, IRingMasterRequestHandlerOverlapped> onInitSession, IConnection connection, ICommunicationProtocol protocol, IRingMasterServerInstrumentation instrumentation) { this.server = server; this.sessionId = sessionId; this.connection = connection; this.onInitSession = onInitSession; this.protocol = protocol; this.instrumentation = instrumentation; }