コード例 #1
0
ファイル: UPnPService.cs プロジェクト: thoja21/banshee-1
        void DeviceAdded(object sender, DeviceEventArgs e)
        {
            Log.DebugFormat("UPnPService.DeviceAdded ({0}) {1}", e.Device.Type, e.Device.Udn);
            Device device = e.Device.GetDevice();

            if (device.Type.Type == "MediaServer")
            {
                Log.DebugFormat("UPnPService MediaServer Found: {0} {1}", device.ModelName, device.ModelNumber);
                UPnPServerSource source = new UPnPServerSource(device);

                string key = device.Udn;
                if (source_map.Count == 0)
                {
                    ThreadAssist.ProxyToMain(delegate {
                        ServiceManager.SourceManager.AddSource(container);
                    });
                }

                if (source_map.ContainsKey(key))
                {
                    // Received new connection info for service
                    container.RemoveChildSource(source_map [key]);
                    source_map [key] = source;
                }
                else
                {
                    // New service information
                    source_map.Add(key, source);
                }

                container.AddChildSource(source);
            }
        }
コード例 #2
0
ファイル: UPnPService.cs プロジェクト: thoja21/banshee-1
        void DeviceRemoved(object sender, DeviceEventArgs e)
        {
            Log.DebugFormat("UPnPService.DeviceRemoved ({0}) {1}", e.Device.Type, e.Device.Udn);

            // We can't use e.Device.GetDevice () here, because the device might already be disposed
            if (e.Device.Type.Type == "MediaServer")
            {
                Log.DebugFormat("UPnPService MediaServer Removed: {0} {1}", e.Device.Type, e.Device.Udn);
                String           key    = e.Device.Udn;
                UPnPServerSource source = source_map [key];

                source.Disconnect();
                container.RemoveChildSource(source);
                source_map.Remove(key);

                if (source_map.Count == 0)
                {
                    ServiceManager.SourceManager.RemoveSource(container);
                }
            }
        }