Exemple #1
0
 public ContainerMediaServer(ModelMediaServer aMediaServer, container aContainer)
 {
     iUpdateId    = 0;
     iMetadata    = aContainer;
     iMediaServer = aMediaServer;
     iLock        = new object();
 }
Exemple #2
0
        private void MediaServerAdded(object sender, Library.EventArgsMediaServer e)
        {
            ModelMediaServer mediaServer = null;

            try
            {
                mediaServer = new ModelMediaServer(e.MediaServer, iEventProvider);
                mediaServer.EventContainerUpdated           += EventContainerUpdatedHandler;
                mediaServer.EventSystemUpdateIDStateChanged += EventContainerUpdatedHandler;
                mediaServer.Open();
            }
            catch (Exception)
            {
                // failed to create the media server - a dodgy media server shouldn't crash the application
                UserLog.WriteLine(string.Format("{0}: Failed to create media server ({1}, {2})", DateTime.Now, e.MediaServer.Name, e.MediaServer.Device.Model));
            }

            if (mediaServer != null)
            {
                lock (iLock)
                {
                    iMediaServers.Remove(e.MediaServer);
                    iMediaServers.Add(e.MediaServer, mediaServer);
                    iMetadata.ChildCount = iMediaServers.Count;
                }

                if (EventContentAdded != null)
                {
                    EventContentAdded(this, EventArgs.Empty);
                }
            }
        }
Exemple #3
0
 public ContainerMediaServer(ModelMediaServer aMediaServer, container aContainer)
 {
     iUpdateId        = 0;
     iMetadata        = aContainer;
     iMediaServer     = aMediaServer;
     iLock            = new object();
     iReceivedInitial = false;
 }
Exemple #4
0
        public ContainerMediaServer(ModelMediaServer aMediaServer, container aContainer)
        {
            iUpdateId    = 0;
            iMetadata    = aContainer;
            iMediaServer = aMediaServer;

            iMutex = new Mutex(false);
        }
Exemple #5
0
        private void EventModelMediaServerInitial(object sender, EventArgs args)
        {
            ModelMediaServer     ms            = sender as ModelMediaServer;
            ContainerMediaServer rootContainer = null;

            lock (iLock)
            {
                iMediaServerRootContainers.TryGetValue(ms.Metadata.Id, out rootContainer);
            }

            if (rootContainer != null)
            {
                rootContainer.OnEventInitial();
            }
        }
Exemple #6
0
        private void EventContainerUpdatedHandler(object sender, EventArgs args)
        {
            ModelMediaServer     ms            = sender as ModelMediaServer;
            ContainerMediaServer rootContainer = null;

            lock (iLock)
            {
                iMediaServerRootContainers.TryGetValue(ms.Metadata.Id, out rootContainer);
            }

            if (rootContainer != null)
            {
                ThreadPool.QueueUserWorkItem(delegate {
                    rootContainer.OnEventTreeChanged();
                });
            }
        }
Exemple #7
0
        private void MediaServerAdded(object sender, Library.EventArgsMediaServer e)
        {
            try
            {
                ModelMediaServer mediaServer = new ModelMediaServer(e.MediaServer, iSupport.EventUpnpProvider);

                iMutex.WaitOne();
                if (iSortedMediaServers.ContainsKey(e.MediaServer.Name))
                {
                    MediaServer matched = null;
                    foreach (MediaServer m in iMediaServers.Keys)
                    {
                        if (m.Name.Equals(e.MediaServer.Name))
                        {
                            matched = m;
                            break;
                        }
                    }
                    if (matched != null)
                    {
                        iMediaServers.Remove(matched);
                    }
                    iSortedMediaServers.Remove(e.MediaServer.Name);
                }
                iMediaServers.Add(e.MediaServer, mediaServer);
                iSortedMediaServers.Add(e.MediaServer.Name, mediaServer);
                Assert.Check(iMediaServers.Keys.Count == iSortedMediaServers.Count);
                iMutex.ReleaseMutex();

                if (EventContentAdded != null)
                {
                    EventContentAdded(this, EventArgs.Empty);
                }
            }
            catch (ServiceException) { }
        }