private void _NextSequence(Action actionOnFail)
        {
            _DisposeSequenceExecutor();

            try {
                if (_state != RunState.Stopping && _sequenceEnumerator.MoveNext())
                {
                    _sequenceExecutor = _sequenceEnumerator.Current;

                    _AssignEventHandlers();

                    _state = RunState.Playing;
                    _sequenceExecutor.Start();
                }
            }
            catch (Exception ex) {
                Logging.ErrorException(ex.Message, ex);
                _DisposeSequenceExecutor();
            }
            finally {
                // Allow an exception to propogate after the caller's failure action
                // has had a chance to execute.
                if (_sequenceExecutor == null)
                {
                    actionOnFail();
                }
            }
        }
 private void _DisposeSequenceExecutor()
 {
     if (_sequenceExecutor != null)
     {
         _RemoveEventHandlers();
         _sequenceExecutor.Dispose();
         _sequenceExecutor = null;
     }
 }
Exemple #3
0
        public ISequenceContext CreateSequenceContext(ContextFeatures contextFeatures, ISequence sequence)
        {
            ISequenceExecutor executor = Vixen.Services.SequenceTypeService.Instance.CreateSequenceExecutor(sequence);
            ISequenceContext  context  = (ISequenceContext)_CreateContext(ContextTargetType.Sequence, contextFeatures);

            if (executor != null && context != null)
            {
                context.Executor = executor;
                context.Sequence = sequence;
                _AddContext(context);
            }
            return(context);
        }
Exemple #4
0
        public ISequenceContext CreateSequenceContext(ContextFeatures contextFeatures, ISequence sequence)
        {
            ISequenceExecutor executor = Vixen.Services.SequenceTypeService.Instance.CreateSequenceExecutor(sequence);
            ISequenceContext  context  = (ISequenceContext)_CreateContext(ContextTargetType.Sequence, contextFeatures);

            if (executor != null && context != null)
            {
                context.Executor = executor;
                context.Sequence = sequence;
                _AddContext(context);
            }
            VixenSystem.Instrumentation.AddValue(_contextUpdateTimeValue);
            return(context);
        }
Exemple #5
0
        public ISequenceExecutor CreateSequenceExecutor(ISequence sequence)
        {
            SequenceTypeModuleManagement manager = Modules.GetManager <ISequenceTypeModuleInstance, SequenceTypeModuleManagement>();
            var sequenceTypeFactory = manager.GetFactory(sequence);

            if (sequenceTypeFactory != null)
            {
                ISequenceExecutor sequenceExecutor = sequenceTypeFactory.CreateExecutor();
                if (sequenceExecutor == null)
                {
                    throw new InvalidOperationException("No executor exists for sequence of type " + sequence.GetType() + ".");
                }
                return(sequenceExecutor);
            }
            return(null);
        }
Exemple #6
0
        private void _NextSequence(Action actionOnFail)
        {
            _DisposeSequenceExecutor();

            try {
                if (_state != RunState.Stopping && _sequenceEnumerator.MoveNext()) {
                    _sequenceExecutor = _sequenceEnumerator.Current;

                    _AssignEventHandlers();

                    _state = RunState.Playing;
                    _sequenceExecutor.Start();
                }
            }
            catch (Exception ex) {
                Logging.Error(ex.Message,ex);
                _DisposeSequenceExecutor();
            }
            finally {
                // Allow an exception to propogate after the caller's failure action
                // has had a chance to execute.
                if (_sequenceExecutor == null) {
                    actionOnFail();
                }
            }
        }
Exemple #7
0
 private void _DisposeSequenceExecutor()
 {
     if (_sequenceExecutor != null) {
         _RemoveEventHandlers();
         _sequenceExecutor.Dispose();
         _sequenceExecutor = null;
     }
 }