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); } } } }
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)); } }