ClientSbeSession
Клиентская сессия SBE — одна на каждого подключенного клиента.
Наследует: SbeSession
Реализует: IMessageListenerSession, ILogReceiver, ILogSource, IDisposable
Конструкторы
public ClientSbeSession(string version, string language, Stream clientStream, TcpClient client, SbeSession serverSession, string authorizationToken, ISessionTransactionIdStorage transactionIdStorage, bool isDemo, int maxPendingMessages)
clientSbeSession = ClientSbeSession(version, language, clientStream, client, serverSession, authorizationToken, transactionIdStorage, isDemo, maxPendingMessages)
Инициализирует новый экземпляр ClientSbeSession.
Свойства
public string AuthorizationToken { get; }
value = clientSbeSession.AuthorizationToken
Токен авторизации, назначенный после успешного входа в систему.
public long BytesReceived { get; set; }
value = clientSbeSession.BytesReceived
clientSbeSession.BytesReceived = value
Количество полученных байтов.
public long BytesSent { get; set; }
value = clientSbeSession.BytesSent
clientSbeSession.BytesSent = value
Количество отправленных байтов.
public int ErrorCount { get; set; }
value = clientSbeSession.ErrorCount
clientSbeSession.ErrorCount = value
Количество ошибок.
public override bool IsConnected { get; }
value = clientSbeSession.IsConnected
Получите статус соединения.
public int OutgoingQueueCount { get; }
value = clientSbeSession.OutgoingQueueCount
Текущий размер очередей исходящих сообщений (-1, если канал не выставляет счет).
public EndPoint RemoteEndPoint { get; }
value = clientSbeSession.RemoteEndPoint
Удаленная конечная точка подключенного клиента.
public SbeRecordSerializer Serializer { get; }
value = clientSbeSession.Serializer
Сериализатор SBE для этой сессии.
public SbeSession ServerSession { get; }
value = clientSbeSession.ServerSession
Конфигурация сеанса на стороне сервера.
public int TotalErrorCount { get; set; }
value = clientSbeSession.TotalErrorCount
clientSbeSession.TotalErrorCount = value
Полный подсчет ошибок.
public ISessionTransactionIdStorage TransactionIdStorage { get; }
value = clientSbeSession.TransactionIdStorage
public DateTime UpdatedTime { get; }
value = clientSbeSession.UpdatedTime
Таймстэмп последнего полученного сообщения (сердцебиение или данные).
public string Version { get; }
value = clientSbeSession.Version
Версия клиентского приложения.
public byte[] WriteBuffer { get; }
value = clientSbeSession.WriteBuffer
Каждый сеанс нуждается в собственном буфере, потому что исходящие сообщения обрабатываются одновременно в отдельных задачах. Буфер растет по требованию (см. Int32)), поэтому большие кадры не сбрасываются.
Методы
protected override void DisposeManaged()
clientSbeSession.DisposeManaged()
Освободите ресурсы.
public bool EnqueueWork(ServerSubscription subscription, string requestId, Func<ClientSbeSession, string, CancellationToken, ValueTask<bool>> handler)
result = clientSbeSession.EnqueueWork(subscription, requestId, handler)
Поставьте рабочий элемент сериализации в очередь для обработки. Возвращает false, если очередь заполнена (противодавление клиента).
public void EnsureWriteBuffer(int minSize)
clientSbeSession.EnsureWriteBuffer(minSize)
Гарантирует, что буфер записи может содержать как минимум байты, перераспределяя (удваивая емкость), когда текущий буфер слишком мал.
- minSize
- Минимально необходимый размер буфера в байтах.
public override void IncreaseBytesSent(int count)
clientSbeSession.IncreaseBytesSent(count)
Увеличьте BytesSent.
- count
- Ценность.
public override void IncreaseErrorCount()
clientSbeSession.IncreaseErrorCount()
Увеличьте ErrorCount.
public Task Init(SbeServerSettings serverSettings, Action<ClientSbeSession> logout, CancellationToken cancellationToken)
result = clientSbeSession.Init(serverSettings, logout, cancellationToken)
Запустите цикл обработки исходящего сообщения.
public void Ping()
clientSbeSession.Ping()
Обновляет временную метку последней активности до текущего момента.
public override void ResetErrorCount()
clientSbeSession.ResetErrorCount()
Сброс ErrorCount.
public ValueTask WriteFramedMessageAsync(ReadOnlyMemory<byte> payload, CancellationToken cancellationToken)
result = clientSbeSession.WriteFramedMessageAsync(payload, cancellationToken)
Запишите сообщение в рамке SBE в клиентский поток. [префикс длины 4 байта (uint32 LE)][полезная нагрузка сообщения SBE]