Ejemplo n.º 1
0
 public OperationPacketEventArgs(IDataPacket packet, IChannel channel, int rawSize, ISocketOperation operation)
 {
     Packet    = packet;
     Channel   = channel;
     RawSize   = rawSize;
     Operation = operation;
 }
Ejemplo n.º 2
0
 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);
 }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        /// <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();
                }
            }
        }
Ejemplo n.º 6
0
 public void AttachOperation(ISocketOperation operation, Guid connectionGuid)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 7
0
 public void RegisterOperation(ISocketOperation operation)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 8
0
 public void AttachOperation(ISocketOperation operation, Guid connectionGuid)
 {
     operation.ConnectionGuid = connectionGuid;
 }