Esempio n. 1
0
        public SubscribedEvent SubscribeToEvent(LightingLoad theLoad, Type eventType)
        {
            var map = MessageHub.Instance;

            SubscribedEvent sEvent = new SubscribedEvent();

            if (eventType == typeof(LoadLevelEvent))
            {
                Action <LoadLevelEvent> loadEvent = null;
                loadEvent = new Action <LoadLevelEvent>(x => this.ProcessLoadLevelEvent(x));
                var loadID = theLoad.LoadID;
                var token  = map.Subscribe(loadEvent, x => x.Load.LoadID == loadID);

                sEvent.token     = token;
                sEvent.eventType = typeof(LoadLevelEvent);
            }
            else
            {
                throw new Exception("Event Type not found");
            }

            List <SubscribedEvent> list;

            if (!mydict.TryGetValue(theLoad, out list))
            {
                list = new List <SubscribedEvent>();
                mydict.Add(theLoad, list);
            }

            list.Add(sEvent);

            return(sEvent);
        }
        public SubscribedEvent SubscribeToEvent(Scene theScene, Type eventType)
        {
            var map = MessageHub.Instance;

            SubscribedEvent sEvent = new SubscribedEvent();

            if (eventType == typeof(SceneAtLevelEvent))
            {
                Action <SceneAtLevelEvent> sceneEvent = null;
                sceneEvent = new Action <SceneAtLevelEvent>(x => this.ProcessSceneAtLevelEvent(x));
                var sceneID = theScene.SceneID;
                var token   = map.Subscribe(sceneEvent, x => x.Scene.SceneID == sceneID);

                sEvent.token     = token;
                sEvent.eventType = typeof(SceneAtLevelEvent);
            }
            else
            {
                throw new Exception("Event Type not found");
            }


            //Need To Add Subscription Logic for Scene


            List <SubscribedEvent> list;

            if (!sceneEvents.TryGetValue(theScene, out list))
            {
                list = new List <SubscribedEvent>();
                sceneEvents.Add(theScene, list);
            }

            list.Add(sEvent);

            return(sEvent);
        }
Esempio n. 3
0
        private static void PublishSubscribedEvent(Message request, IClient client)
        {
            SubscribedEvent subscribedEvent = new SubscribedEvent(client, request.subscription);

            EventHub.Publish(subscribedEvent);
        }
        public SubscribedEvent SubscribeToEvent(LightingLoad theLoad, Type eventType)
        {
            var map = MessageHub.Instance;

            SubscribedEvent sEvent = new SubscribedEvent();

            List <SubscribedEvent> sEvents;

            if (!loadEvents.TryGetValue(theLoad, out sEvents))
            {
                sEvents = new List <SubscribedEvent>();
                loadEvents.Add(theLoad, sEvents);
            }

            if (!sEvents.Any(x => x.eventType == eventType))
            {
                if (eventType == typeof(LoadLevelEvent))
                {
                    Action <LoadLevelEvent> loadEvent = null;
                    loadEvent = new Action <LoadLevelEvent>(x => this.ProcessLoadLevelEvent(x));
                    var loadID = theLoad.LoadID;
                    var token  = map.Subscribe(loadEvent, x => x.Load.LoadID == loadID);

                    sEvent.token     = token;
                    sEvent.eventType = typeof(LoadLevelEvent);
                }
                else if (eventType == typeof(LoadIsOnEvent))
                {
                    Action <LoadIsOnEvent> loadEvent = null;
                    loadEvent = new Action <LoadIsOnEvent>(x => this.ProcessLoadIsOnEvent(x));

                    var loadID = theLoad.LoadID;
                    var token  = map.Subscribe(loadEvent, x => x.Load.LoadID == loadID);

                    sEvent.token     = token;
                    sEvent.eventType = typeof(LoadIsOnEvent);
                }
                else if (eventType == typeof(LoadIsOffEvent))
                {
                    Action <LoadIsOffEvent> loadEvent = null;
                    loadEvent = new Action <LoadIsOffEvent>(x => this.ProcessLoadIsOffEvent(x));

                    var loadID = theLoad.LoadID;
                    var token  = map.Subscribe(loadEvent, x => x.Load.LoadID == loadID);

                    sEvent.token     = token;
                    sEvent.eventType = typeof(LoadIsOffEvent);
                }
                else if (eventType == typeof(LoadOnEvent))
                {
                    Action <LoadOnEvent> loadEvent = null;
                    loadEvent = new Action <LoadOnEvent>(x => this.ProcessLoadOnEvent(x));

                    var loadID = theLoad.LoadID;
                    var token  = map.Subscribe(loadEvent, x => x.Load.LoadID == loadID);

                    sEvent.token     = token;
                    sEvent.eventType = typeof(LoadOnEvent);
                }
                else if (eventType == typeof(LoadOffEvent))
                {
                    Action <LoadOffEvent> loadEvent = null;
                    loadEvent = new Action <LoadOffEvent>(x => this.ProcessLoadOffEvent(x));

                    var loadID = theLoad.LoadID;
                    var token  = map.Subscribe(loadEvent, x => x.Load.LoadID == loadID);

                    sEvent.token     = token;
                    sEvent.eventType = typeof(LoadOffEvent);
                }
                else if (eventType == typeof(LoadRaiseEvent))
                {
                    Action <LoadRaiseEvent> loadEvent = null;
                    loadEvent = new Action <LoadRaiseEvent>(x => this.ProcessLoadRaiseEvent(x));

                    var loadID = theLoad.LoadID;
                    var token  = map.Subscribe(loadEvent, x => x.Load.LoadID == loadID);

                    sEvent.token     = token;
                    sEvent.eventType = typeof(LoadRaiseEvent);
                }
                else if (eventType == typeof(LoadLowerEvent))
                {
                    Action <LoadLowerEvent> loadEvent = null;
                    loadEvent = new Action <LoadLowerEvent>(x => this.ProcessLoadLowerEvent(x));

                    var loadID = theLoad.LoadID;
                    var token  = map.Subscribe(loadEvent, x => x.Load.LoadID == loadID);

                    sEvent.token     = token;
                    sEvent.eventType = typeof(LoadLowerEvent);
                }
                else if (eventType == typeof(LoadRampToLevelEvent))
                {
                    Action <LoadRampToLevelEvent> levelSetEvent = null;
                    levelSetEvent = new Action <LoadRampToLevelEvent>(x => this.ProcessLoadRampToLevelEvent(x));

                    var loadID = theLoad.LoadID;
                    var token  = map.Subscribe(levelSetEvent, x => x.Load.LoadID == loadID);

                    sEvent.token     = token;
                    sEvent.eventType = typeof(LoadRampToLevelEvent);
                }
                else
                {
                    throw new Exception("Event Type not found");
                }

                sEvents.Add(sEvent);
            }
            else
            {
                CrestronConsole.PrintLine("EventType: " + eventType + " already subscribed for LoadID: " + theLoad.LoadID);
            }

            return(sEvent);
        }