Beispiel #1
0
        }//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()