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); }