public void Handle(TransportMessage message)
        {
            if (!message.Headers.ContainsKey(NServiceBus.Headers.Expire))
            {
                throw new InvalidOperationException("Non timeout message arrived at the timeout manager, id:" + message.Id);
            }

            var sagaId = Guid.Empty;

            if (message.Headers.ContainsKey(NServiceBus.Headers.SagaId))
            {
                sagaId = Guid.Parse(message.Headers[NServiceBus.Headers.SagaId]);
            }


            if (message.Headers.ContainsKey(Headers.ClearTimeout))
            {
                Manager.ClearTimeout(sagaId);
                Persister.Remove(sagaId);
            }
            else
            {
                var data = new TimeoutData
                {
                    Destination = message.ReplyToAddress,
                    SagaId      = sagaId,
                    State       = message.Body,
                    Time        = DateTime.Parse(message.Headers[NServiceBus.Headers.Expire])
                };

                Manager.PushTimeout(data);
                Persister.Add(data);
            }
        }
예제 #2
0
파일: Commander.cs 프로젝트: henkin/brisk
        public CommandResult <Create <TEntity> > Create <TEntity>(TEntity entity) where TEntity : Entity
        {
            var entityService = GetEntityService <TEntity>();

            if (!entityService.Validate(entity))
            {
                return new CommandResult <Create <TEntity> >(null)
                       {
                           IsSuccess = false
                       }
            }
            ;

            entityService.Create(entity);
            var command = new Create <TEntity>(entity);

            Eventer.Raise <PersistenceEvent>(new Created <TEntity>(entity));
            Persister.Add(entity);

            var commandResult = new CommandResult <Create <TEntity> >(command)
            {
                IsSuccess = true
            };

            return(commandResult);
        }
예제 #3
0
 /// <summary>
 /// レコード削除(未使用)
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void OnDeleteRecordClicked(object sender, EventArgs e)
 {
     if (sender is MenuItem mi && mi.BindingContext is Note note)
     {
         note.IsDeleted = true;
         Persister.Add(note);
         Refresh();
     }
 }
예제 #4
0
        public void Handle(TransportMessage message)
        {
            var sagaId = Guid.Empty;

            if (message.Headers.ContainsKey(Headers.SagaId))
            {
                sagaId = Guid.Parse(message.Headers[Headers.SagaId]);
            }


            if (message.Headers.ContainsKey(Headers.ClearTimeouts))
            {
                if (sagaId == Guid.Empty)
                {
                    throw new InvalidOperationException("Invalid saga id specified, clear timeouts is only supported for saga instances");
                }

                Persister.ClearTimeoutsFor(sagaId);
                Manager.ClearTimeout(sagaId);
            }
            else
            {
                if (!message.Headers.ContainsKey(Headers.Expire))
                {
                    throw new InvalidOperationException("Non timeout message arrived at the timeout manager, id:" + message.Id);
                }

                var data = new TimeoutData
                {
                    Destination          = message.ReplyToAddress,
                    SagaId               = sagaId,
                    State                = message.Body,
                    Time                 = message.Headers[Headers.Expire].ToUtcDateTime(),
                    CorrelationId        = message.CorrelationId,
                    Headers              = message.Headers,
                    OwningTimeoutManager = Configure.EndpointName
                };

                Persister.Add(data);
                Manager.PushTimeout(data);
            }
        }
예제 #5
0
        public void Handle(TransportMessage message)
        {
            var sagaId = Guid.Empty;

            if (message.Headers.ContainsKey(Headers.SagaId))
            {
                sagaId = Guid.Parse(message.Headers[Headers.SagaId]);
            }


            if (message.Headers.ContainsKey(Headers.ClearTimeouts))
            {
                if (sagaId == Guid.Empty)
                {
                    throw new InvalidOperationException("Invalid saga id specified, clear timeouts is only supported for saga instances");
                }

                Manager.ClearTimeout(sagaId);
                Persister.Remove(sagaId);
            }
            else
            {
                if (!message.Headers.ContainsKey(Headers.Expire))
                {
                    throw new InvalidOperationException("Non timeout message arrived at the timeout manager, id:" + message.Id);
                }

                var data = new TimeoutData
                {
                    Destination = message.ReplyToAddress,
                    SagaId      = sagaId,
                    State       = message.Body,
                    Time        = DateTime.Parse(message.Headers[Headers.Expire])
                };

                Manager.PushTimeout(data);
                Persister.Add(data);
            }
        }
예제 #6
0
        public void Handle(TimeoutMessage message)
        {
            if (message.ClearTimeout)
            {
                Manager.ClearTimeout(message.SagaId);
                Persister.Remove(message.SagaId);
            }
            else
            {
                var data = new TimeoutData
                {
                    Destination = Bus.CurrentMessageContext.ReturnAddress,
                    SagaId      = message.SagaId,
                    State       = message.State,
                    Time        = message.Expires
                };

                Manager.PushTimeout(data);
                Persister.Add(data);
            }

            Bus.DoNotContinueDispatchingCurrentMessageToHandlers();
        }