public void TestResolvesToMessageIdentifierWhenAnnotatedForCommandMessage()
        {
            IParameterResolver resolver = _testSubject.CreateInstance(_messageIdentifierMethod, _messageIdentifierMethod.GetParameters(), 0);
            var eventMessage            = GenericCommandMessage.AsCommandMessage("test");

            resolver.Matches(eventMessage).Should().BeTrue();
            resolver.ResolveParameterValue(eventMessage).Should().Be(eventMessage.Identifier);
        }
Esempio n. 2
0
        protected void Send(object command, ICommandCallback callback)
        {
            var commandMessage  = ProcessInterceptors(GenericCommandMessage.AsCommandMessage(command));
            var commandCallback = callback;

            if (_retryScheduler != null)
            {
                commandCallback = new RetryingCallback(callback, _retryScheduler, CommandBus);
            }
            CommandBus.Dispatch(commandMessage, commandCallback);
        }
Esempio n. 3
0
 protected void SendAndForget(object command)
 {
     if (_retryScheduler == null)
     {
         CommandBus.Dispatch(ProcessInterceptors(GenericCommandMessage.AsCommandMessage(command)));
     }
     else
     {
         var commandMessage = GenericCommandMessage.AsCommandMessage(command);
         Send(commandMessage, LoggingCallback.Instance);
     }
 }
            public Task <object> Invoke(object proxy, MethodInfo invokedMethod, object[] args)
            {
                var command = args[0];

                if (_metaDataExtractors.Length != 0)
                {
                    var metaDataValues = new Dictionary <string, object>();
                    foreach (var extractor in _metaDataExtractors)
                    {
                        extractor.AddMetaData(args, metaDataValues);
                    }

                    if (!metaDataValues.IsEmpty())
                    {
                        command = GenericCommandMessage.AsCommandMessage(command).WithMetaData(metaDataValues);
                    }
                }

                if (_forceCallbacks || !_commandCallbacks.IsEmpty())
                {
                    var callbacks = new List <ICommandCallback>();
                    var future    = new FutureCallback <object>();
                    callbacks.Add(future);
                    foreach (var arg in args)
                    {
                        if (arg is ICommandCallback)
                        {
                            var callback = (ICommandCallback)arg;
                            callbacks.Add(callback);
                        }
                    }

                    callbacks.AddRange(_commandCallbacks);
                    Send(command, new CompositeCallback(callbacks));
                    return(future.Task);
                }
                else
                {
                    SendAndForget(command);
                    return(null);
                }
            }