}//ProcessEngineEvent() // // // ***************************************************************** // **** ProcessAppServiceEvent **** // ***************************************************************** private void ProcessAppServiceEvent(AppServiceEventArg eventArg) { IEngineHub hub = null; switch (eventArg.EventType) { case AppServiceEventType.ServiceAdded: if (m_EngineHubSubcriptions.TryGetValue(eventArg.ServiceName, out hub) == false) { IService iService; if (m_AppServices.TryGetService(eventArg.ServiceName, out iService) && (iService is ForeignService) == false) { // This is a new service that is NOT a foreign reflection. if (iService is IEngineHub) { hub.EngineChanged += new EventHandler(this.HubEventEnqueue); m_EngineHubSubcriptions.Add(eventArg.ServiceName, hub); Log.NewEntry(LogLevel.Warning, "ProcessAppServiceEvent: Subscribing to engine hub {0}.", eventArg.ServiceName); // Broadcast our service changes List <IService> services = new List <IService>(); services.Add((IService)hub); SendServices(-1, MessageType.ServiceAdded, services); } } } break; case AppServiceEventType.ServiceRemoved: if (m_EngineHubSubcriptions.TryGetValue(eventArg.ServiceName, out hub) == true) { // Found subscriptio entry, remove it. hub.EngineChanged -= new EventHandler(this.HubEventEnqueue); m_EngineHubSubcriptions.Remove(eventArg.ServiceName); Log.NewEntry(LogLevel.Warning, "ProcessAppServiceEvent: Removing engine hub {0}.", eventArg.ServiceName); // Broadcast our service changes List <IService> services = new List <IService>(); services.Add((IService)hub); SendServices(-1, MessageType.ServiceRemoved, services); } break; default: Log.NewEntry(LogLevel.Warning, "ProcessAppServiceEvent: Unhandled event {0}. Ignoring.", eventArg); break; } }
// #endregion//Private Methods #region Foreign Event Handlers // ***************************************************************** // **** Event Handlers **** // ***************************************************************** // // // // ***************************************************** // **** AppServices_ServiceAdded() **** // ***************************************************** private void AppServices_ServiceAdded(object sender, EventArgs eventArgs) { if (eventArgs is AppServiceEventArg) { // A New service has appeared. // Create an entry for it, add it to list. AppServiceEventArg e = (AppServiceEventArg)eventArgs; ServiceListEntry entry; if (e.EventType == AppServiceEventType.ServiceAdded && TryCreateServiceListEntry(e.ServiceName, out entry)) { lock (m_ServicesNew) { m_ServicesNew.Add(entry); } IsThisControlNeedsUpdating = true; } } // if (IsThisControlNeedsUpdating) { UpdateThisControl(this, EventArgs.Empty); } }// AppServices_ServiceAdded()