private void ServiceJoined(IService service)
{
if (!service.ImplementsInterface(NOTIFICATION_INTERFACE)) return;
foreach (string path in NOTIFICATION_PATHS)
{
IBusObject busObject;
IInterface @interface;
ISignal signal;
try
{
busObject = service.Objects.First(x => x.Path == path);
}
catch (InvalidOperationException)
{
Debug.WriteLine("Couldn't find bus object: " + path);
return;
}
try
{
@interface = busObject.Interfaces.First(x => x.Name == NOTIFICATION_INTERFACE);
}
catch (InvalidOperationException)
{
Debug.WriteLine("Couldn't find Interface: " + NOTIFICATION_INTERFACE);
return;
}
try
{
signal = @interface.Signals.Single(x => x.Name.ToLower() == "notify");
signal.SignalRaised += AllJoynNotifier_SignalRaised;
subcribedSignals.Add(signal);
}
catch (InvalidOperationException)
{
Debug.WriteLine("The Notification interface is not implemented correctly.");
return;
}
Debug.WriteLine(string.Format("Subscribed to {0} notifications on {1}.", path, service.Name));
}
}