private void HandleSocketOperationPacket(SocketOperationRequest socketOperationRequest) { if (socketOperationRequest.Request == SocketOperationRequest.OperationRequest.Finish) { if (!HostChannel.ActiveSocketOperations.ContainsKey(socketOperationRequest.OperationGuid)) { //TODO: real exception Debug.Print("Could not locate socket operation"); } HostChannel.ActiveSocketOperations[socketOperationRequest.OperationGuid].Initialize(); } }
public T CreateOperation <T>(Guid connectionGuid) where T : ISocketOperation { var operation = CreateOperation <T>(); operation.ConnectionGuid = connectionGuid; 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); return(operation); }
public void UnregisterOperation(Guid operationGuid) { if (!ActiveSocketOperations.ContainsKey(operationGuid)) { return; } var operationRequest = new SocketOperationRequest { OperationGuid = operationGuid, Request = SocketOperationRequest.OperationRequest.Close, OperationId = ActiveSocketOperations[operationGuid].OperationId }; Send(operationRequest, operationGuid); lock (_lockObj) ActiveSocketOperations.Remove(operationGuid); Debug.Print("Closed operation with GUID: " + 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); }
private void HandleSocketOperationPacket(SocketOperationRequest socketOperationRequest) { if (socketOperationRequest.Request == SocketOperationRequest.OperationRequest.Create) { var operation = (ISocketOperation)Activator.CreateInstance(OperationTable[socketOperationRequest.OperationId]); operation.OperationGuid = socketOperationRequest.OperationGuid; operation.HostChannel = this; operation.ConnectionGuid = Client.Identity.Guid; ActiveSocketOperations.Add(socketOperationRequest.OperationGuid, operation); var operationRequest = new SocketOperationRequest { OperationGuid = socketOperationRequest.OperationGuid, Request = SocketOperationRequest.OperationRequest.Finish }; Send(operationRequest); Debug.Print("New SocketOperation created with GUID: " + socketOperationRequest.OperationGuid); } else if (socketOperationRequest.Request == SocketOperationRequest.OperationRequest.Close) { ActiveSocketOperations.Remove(socketOperationRequest.OperationGuid); } }