public CompositeEventActivity(CompositeEventStatusAccessor <TInstance> accessor, int flag, CompositeEventStatus complete, Event @event)
 {
     _accessor = accessor;
     _flag     = flag;
     _complete = complete;
     _event    = @event;
 }
 public CompositeEventActivity(PropertyInfo propertyInfo, int flag,
                               CompositeEventStatus complete, Action <Composer, TInstance> completeCallback)
 {
     _property         = new ReadWriteProperty <TInstance, CompositeEventStatus>(propertyInfo);
     _flag             = flag;
     _complete         = complete;
     _completeCallback = completeCallback;
 }
        public object NullSafeGet(IDataReader rs, string[] names, object owner)
        {
            object value = NHibernateUtil.Int32.NullSafeGet(rs, names);
            if (value == null)
                return new CompositeEventStatus();

            var status = new CompositeEventStatus((Int32)value);

            return status;
        }
        public object NullSafeGet(IDataReader rs, string[] names, object owner)
        {
            object value = NHibernateUtil.Int32.NullSafeGet(rs, names);

            if (value == null)
            {
                return(new CompositeEventStatus());
            }

            var status = new CompositeEventStatus((Int32)value);

            return(status);
        }
        public object NullSafeGet(DbDataReader rs, string[] names, ISessionImplementor session, object owner)
        {
            var value = NHibernateUtil.Int32.NullSafeGet(rs, names, session, owner);

            if (value == null)
            {
                return(new CompositeEventStatus());
            }

            var status = new CompositeEventStatus((int)value);

            return(status);
        }
        async Task Execute(BehaviorContext <TInstance> context)
        {
            CompositeEventStatus value = _accessor.Get(context.Instance);

            value.Set(_flag);

            _accessor.Set(context.Instance, value);

            if (!value.Equals(_complete))
            {
                return;
            }

            await RaiseCompositeEvent(context);
        }
        void Execute(Composer composer, TInstance instance)
        {
            composer.Execute(() =>
            {
                CompositeEventStatus value = _property.Get(instance);
                value.Set(_flag);

                _property.Set(instance, value);

                if (!value.Equals(_complete))
                {
                    return(composer.ComposeCompleted());
                }

                var taskComposer = new TaskComposer <TInstance>(composer.CancellationToken);

                _completeCallback(taskComposer, instance);

                return(taskComposer.Finish());
            });
        }
示例#8
0
 public void Set(TInstance instance, CompositeEventStatus status)
 {
     _property.Set(instance, status);
 }