public OperationPacketEventArgs(IDataPacket packet, IChannel channel, int rawSize, ISocketOperation operation) { Packet = packet; Channel = channel; RawSize = rawSize; Operation = operation; }
public void UnregisterOperation(ISocketOperation operation) { if (!ActiveSocketOperations.ContainsKey(operation.OperationGuid)) { return; } lock (_lockObj) ActiveSocketOperations.Remove(operation.OperationGuid); Debug.Print("Closed operation with GUID: " + operation.OperationGuid); }
public void UnregisterOperation(ISocketOperation operation) { if (!ActiveSocketOperations.ContainsKey(operation.OperationGuid)) { return; } var operationRequest = new SocketOperationRequest { OperationGuid = operation.OperationGuid, Request = SocketOperationRequest.OperationRequest.Close, OperationId = operation.OperationId }; Send(operationRequest, operation.ConnectionGuid); lock (_lockObj) ActiveSocketOperations.Remove(operation.OperationGuid); Debug.Print("Closed operation with GUID: " + operation.OperationGuid); }
public void RegisterOperation(ISocketOperation operation) { if (operation.ConnectionGuid == Guid.Empty) { //TODO: real exception Debug.Print("Socket operation not attached"); } lock (_lockObj) ActiveSocketOperations.Add(operation.OperationGuid, operation); var operationRequest = new SocketOperationRequest { OperationGuid = operation.OperationGuid, Request = SocketOperationRequest.OperationRequest.Create, OperationId = operation.OperationId }; Send(operationRequest, operation.ConnectionGuid); }
/// <inheritdoc /> public async IAsyncEnumerable <Response <JsonDocument> > ExecuteAsync( OperationRequest request, [EnumeratorCancellation] CancellationToken cancellationToken = default) { if (request is null) { throw new ArgumentNullException(nameof(request)); } await using ISession session = await _sessionFactory(cancellationToken); await using ISocketOperation operation = await session.StartOperationAsync(request, cancellationToken); await foreach (var message in operation.ReadAsync(cancellationToken)) { switch (message.Type) { case OperationMessageType.Data when message is DataDocumentOperationMessage <JsonDocument> msg: yield return(new Response <JsonDocument>(msg.Payload, null)); break; case OperationMessageType.Error when message is ErrorOperationMessage msg: var operationEx = new SocketOperationException(msg.Message); yield return(new Response <JsonDocument>(null, operationEx)); yield break; case OperationMessageType.Cancelled: var canceledException = new OperationCanceledException(); yield return(new Response <JsonDocument>(null, canceledException)); yield break; case OperationMessageType.Complete: yield break; default: throw new ArgumentOutOfRangeException(); } } }
public void AttachOperation(ISocketOperation operation, Guid connectionGuid) { throw new NotImplementedException(); }
public void RegisterOperation(ISocketOperation operation) { throw new NotImplementedException(); }
public void AttachOperation(ISocketOperation operation, Guid connectionGuid) { operation.ConnectionGuid = connectionGuid; }