private void SenderAdded(object sender, Senders.EventArgsSender e)
        {
            lock (iLock)
            {
                if (iOpen)
                {
                    try
                    {
                        ModelSender model = new ModelSender(e.Sender, iEventServer);
                        model.EventAudioChanged      += SenderChanged;
                        model.EventMetadataChanged   += SenderChanged;
                        model.EventStatusChanged     += SenderChanged;
                        model.EventSenderInitialised += SenderInitialised;
                        model.EventSubscriptionError += SubscriptionError;

                        iPendingSenderList.Add(e.Sender.Device.Udn, model);

                        model.Open();
                    }
                    catch (ServiceException ex)
                    {
                        UserLog.WriteLine("Failed to create ModelSender: " + ex);
                        iSenders.RemoveDevice(e.Sender.Device);
                    }
                }
            }
        }
Beispiel #2
0
        public bool IsPlayingSender(ModelSender aSender)
        {
            bool playingSender = false;

            if (this.Channel != null && aSender != null)
            {
                if (this.TransportState == ModelSourceReceiver.ETransportState.ePlaying ||
                    this.TransportState == ModelSourceReceiver.ETransportState.eBuffering ||
                    this.TransportState == ModelSourceReceiver.ETransportState.eWaiting)
                {
                    if (aSender.Metadata.Count > 0 && this.Channel.DidlLite.Count > 0)
                    {
                        upnpObject sender   = aSender.Metadata[0];
                        upnpObject receiver = this.Channel.DidlLite[0];

                        if (sender.Res.ToString() == receiver.Res.ToString() && DidlLiteAdapter.Title(sender) == DidlLiteAdapter.Title(receiver))
                        {
                            playingSender = true;
                        }
                    }
                }
            }

            return(playingSender);
        }
        private void SenderChanged(object sender, EventArgs e)
        {
            ModelSender multipus = sender as ModelSender;
            bool        removed  = false;
            bool        added    = false;

            lock (iLock)
            {
                if (iSenderList.ContainsKey(multipus.Udn))
                {
                    if (multipus.Status == ModelSender.EStatus.eDisabled)
                    {
                        removed = iEnabledSenderList.Remove(multipus);
                    }
                    else
                    {
                        if (!iEnabledSenderList.Contains(multipus))
                        {
                            iEnabledSenderList.Add(multipus);
                            added = true;
                        }
                        else
                        {
                            removed = true;
                            added   = true;
                        }
                    }
                }
            }

            if (removed && added && EventSenderChanged != null)
            {
                EventSenderChanged(this, new EventArgsSender(multipus));
            }

            if (removed && !added && EventSenderRemoved != null)
            {
                EventSenderRemoved(this, new EventArgsSender(multipus));
            }

            if (added && !removed && EventSenderAdded != null)
            {
                EventSenderAdded(this, new EventArgsSender(multipus));
            }
        }
        private void SenderInitialised(object sender, EventArgs e)
        {
            ModelSender modelSender = sender as ModelSender;
            bool        changed     = false;

            lock (iLock)
            {
                if (iPendingSenderList.Remove(modelSender.Udn))
                {
                    iSenderList.Add(modelSender.Udn, modelSender);
                    Assert.Check(modelSender.Metadata != null);
                    if (modelSender.Status != ModelSender.EStatus.eDisabled)
                    {
                        int index = 0;
                        foreach (ModelSender s in iEnabledSenderList)
                        {
                            if (modelSender.FullName.CompareTo(s.FullName) < 0)
                            {
                                break;
                            }
                            ++index;
                        }
                        iEnabledSenderList.Insert(index, modelSender);
                        changed = true;
                    }
                    else
                    {
                        UserLog.WriteLine("Disabled Sender: " + modelSender.Sender.Name);
                    }
                }
                else
                {
                    UserLog.WriteLine("Sender not found: " + modelSender.Sender.Name);
                }
            }

            if (changed && EventSenderAdded != null)
            {
                EventSenderAdded(this, new EventArgsSender(modelSender));
            }
        }