コード例 #1
0
        private void DefineGraph(IReadOnlyDictionary <string, int> portCount, HashSet <IDictionary <string, object> > links, TransitionHandler <State <object>, State <object>, Type> handler)
        {
            var link = new Dictionary <string, object>();

            var address = handler.GetAddress().Split(new string[] { "::" }, StringSplitOptions.None);

            link.Add("source", handler.GetStateTransition().GetSourceName());
            link.Add("target", handler.GetStateTransition().GetTargetName());

            link.Add("label", address.Length == 3 ? address[2] : "TO");

            var sourcePortKey = handler.GetStateTransition().GetSourceName();
            var sourcePort    = address.Length != 3 ? (portCount[sourcePortKey] != 0 ? portCount[sourcePortKey] + 1 : 0) : 1;

            var targetPortKey = string.Concat("TO", "::", handler.GetStateTransition().GetTargetName());
            int targetPort    = address.Length != 3 ? (portCount[targetPortKey] != 0 ? portCount[targetPortKey] + 1 : 1) : 0;

            link.Add("port", sourcePort + targetPort);

            links.Add(link);
        }
コード例 #2
0
        public ICompletes <StateTransition <TState, TRawState, TTypeState> > ApplyEvent <TN>(TN @event) where TN : Event
        {
            TransitionHandler <TState, TRawState, TTypeState> handler = _transitionHandlerMap.First(x => x.Key == @event.GetEventType()).Value;

            try
            {
                if (handler == null)
                {
                    throw new SystemException(string.Concat("The event with type [", @event.GetEventType(), "] does not match a" +
                                                            " valid transition handler in the processor kernel."));
                }
                return(Completes().With(handler.GetStateTransition()));
            }
            catch (Exception ex)
            {
                Logger.Debug(ex.Message, ex);
                return(Completes().With <StateTransition <TState, TRawState, TTypeState> >(null));
            }
        }