コード例 #1
0
 public void ProcessFailedSendingCommand(ICommand command)
 {
     CommandTaskCompletionSource commandTaskCompletionSource;
     if (_commandTaskDict.TryRemove(command.Id, out commandTaskCompletionSource))
     {
         var commandResult = new CommandResult(CommandStatus.Failed, command.Id, command.AggregateRootId, "Failed to send the command.", typeof(string).FullName);
         commandTaskCompletionSource.TaskCompletionSource.TrySetResult(new AsyncTaskResult<CommandResult>(AsyncTaskStatus.Success, commandResult));
     }
 }
コード例 #2
0
 public void CompleteMessage(ProcessingCommand message, CommandResult commandResult)
 {
     lock (_lockObj2)
     {
         if (message.Sequence == _consumedOffset + 1)
         {
             _messageDict.Remove(message.Sequence);
             _consumedOffset = message.Sequence;
             CompleteMessageWithResult(message, commandResult);
             ProcessRequestToCompleteOffsets();
         }
         else if (message.Sequence > _consumedOffset + 1)
         {
             _requestToCompleteOffsetDict[message.Sequence] = commandResult;
         }
         else if (message.Sequence < _consumedOffset + 1)
         {
             _messageDict.Remove(message.Sequence);
             _requestToCompleteOffsetDict.Remove(message.Sequence);
         }
     }
 }
コード例 #3
0
 private void ProcessDomainEventHandledMessage(DomainEventHandledMessage message)
 {
     CommandTaskCompletionSource commandTaskCompletionSource;
     if (_commandTaskDict.TryRemove(message.CommandId, out commandTaskCompletionSource))
     {
         var commandResult = new CommandResult(CommandStatus.Success, message.CommandId, message.AggregateRootId, message.CommandResult, message.CommandResult != null ? typeof(string).FullName : null);
         if (commandTaskCompletionSource.TaskCompletionSource.TrySetResult(new AsyncTaskResult<CommandResult>(AsyncTaskStatus.Success, commandResult)))
         {
             if (_logger.IsDebugEnabled)
             {
                 _logger.DebugFormat("Command result return, {0}", commandResult);
             }
         }
     }
 }
コード例 #4
0
 private void ProcessExecutedCommandMessage(CommandResult commandResult)
 {
     CommandTaskCompletionSource commandTaskCompletionSource;
     if (_commandTaskDict.TryGetValue(commandResult.CommandId, out commandTaskCompletionSource))
     {
         if (commandTaskCompletionSource.CommandReturnType == CommandReturnType.CommandExecuted)
         {
             _commandTaskDict.Remove(commandResult.CommandId);
             if (commandTaskCompletionSource.TaskCompletionSource.TrySetResult(new AsyncTaskResult<CommandResult>(AsyncTaskStatus.Success, commandResult)))
             {
                 if (_logger.IsDebugEnabled)
                 {
                     _logger.DebugFormat("Command result return, {0}", commandResult);
                 }
             }
         }
         else if (commandTaskCompletionSource.CommandReturnType == CommandReturnType.EventHandled)
         {
             if (commandResult.Status == CommandStatus.Failed || commandResult.Status == CommandStatus.NothingChanged)
             {
                 _commandTaskDict.Remove(commandResult.CommandId);
                 if (commandTaskCompletionSource.TaskCompletionSource.TrySetResult(new AsyncTaskResult<CommandResult>(AsyncTaskStatus.Success, commandResult)))
                 {
                     if (_logger.IsDebugEnabled)
                     {
                         _logger.DebugFormat("Command result return, {0}", commandResult);
                     }
                 }
             }
         }
     }
 }
コード例 #5
0
ファイル: ProcessingCommand.cs プロジェクト: ulswww/enode
 public void Complete(CommandResult commandResult)
 {
     CommandExecuteContext.OnCommandExecuted(commandResult);
 }
コード例 #6
0
 private void ProcessExecutedCommandMessage(CommandExecutedMessage message)
 {
     CommandTaskCompletionSource commandTaskCompletionSource;
     if (_commandTaskDict.TryGetValue(message.CommandId, out commandTaskCompletionSource))
     {
         if (commandTaskCompletionSource.CommandReturnType == CommandReturnType.CommandExecuted)
         {
             _commandTaskDict.Remove(message.CommandId);
             var commandResult = new CommandResult(message.CommandStatus, message.CommandId, message.AggregateRootId, message.ExceptionTypeName, message.ErrorMessage);
             if (commandTaskCompletionSource.TaskCompletionSource.TrySetResult(new AsyncTaskResult<CommandResult>(AsyncTaskStatus.Success, commandResult)))
             {
                 _logger.DebugFormat("Command result setted, commandId:{0}, commandStatus:{1}, aggregateRootId:{2}", message.CommandId, message.CommandStatus, message.AggregateRootId);
             }
         }
         else if (commandTaskCompletionSource.CommandReturnType == CommandReturnType.EventHandled)
         {
             if (message.CommandStatus == CommandStatus.Failed || message.CommandStatus == CommandStatus.NothingChanged)
             {
                 _commandTaskDict.Remove(message.CommandId);
                 var commandResult = new CommandResult(message.CommandStatus, message.CommandId, message.AggregateRootId, message.ExceptionTypeName, message.ErrorMessage);
                 if (commandTaskCompletionSource.TaskCompletionSource.TrySetResult(new AsyncTaskResult<CommandResult>(AsyncTaskStatus.Success, commandResult)))
                 {
                     _logger.DebugFormat("Command result setted, commandId:{0}, commandStatus:{1}, aggregateRootId:{2}, exceptionTypeName:{3}, errorMessage:{4}",
                         message.CommandId,
                         message.CommandStatus,
                         message.AggregateRootId,
                         message.ExceptionTypeName,
                         message.ErrorMessage);
                 }
             }
         }
     }
 }
コード例 #7
0
 private void ProcessDomainEventHandledMessage(DomainEventHandledMessage message)
 {
     CommandTaskCompletionSource commandTaskCompletionSource;
     if (_commandTaskDict.TryRemove(message.CommandId, out commandTaskCompletionSource))
     {
         var commandResult = new CommandResult(CommandStatus.Success, message.CommandId, message.AggregateRootId, null, null);
         if (commandTaskCompletionSource.TaskCompletionSource.TrySetResult(new AsyncTaskResult<CommandResult>(AsyncTaskStatus.Success, commandResult)))
         {
             _logger.DebugFormat("Command result setted, commandId:{0}, commandStatus:{1}, aggregateRootId:{2}", message.CommandId, CommandStatus.Success, message.AggregateRootId);
         }
     }
 }
コード例 #8
0
ファイル: DefaultEventService.cs プロジェクト: ulswww/enode
 private void CompleteCommand(ProcessingCommand processingCommand, CommandResult commandResult)
 {
     processingCommand.Mailbox.CompleteMessage(processingCommand, commandResult);
     _logger.InfoFormat("Complete command, aggregateId: {0}", processingCommand.Message.AggregateRootId);
 }
コード例 #9
0
 private void CompleteMessageWithResult(ProcessingCommand processingCommand, CommandResult commandResult)
 {
     try
     {
         processingCommand.Complete(commandResult);
     }
     catch (Exception ex)
     {
         _logger.Error(string.Format("Failed to complete command, commandId: {0}, aggregateRootId: {1}", processingCommand.Message.Id, processingCommand.Message.AggregateRootId), ex);
     }
 }