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); }
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); }