X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=avahi-sharp%2FServiceBrowser.cs;h=639dd0a3bd5e466a988e542e6ae1b9d9d4008ae8;hb=84a9392791c574c56ca148157b8b951851208398;hp=92b8011c92b128625f05a24e4a1b19f6aba13e8f;hpb=cc272cf44768c9292879a9ee43783fec4b510ffd;p=catta diff --git a/avahi-sharp/ServiceBrowser.cs b/avahi-sharp/ServiceBrowser.cs index 92b8011..639dd0a 100644 --- a/avahi-sharp/ServiceBrowser.cs +++ b/avahi-sharp/ServiceBrowser.cs @@ -47,9 +47,23 @@ namespace Avahi public static ServiceInfo Zero = new ServiceInfo (); } - public delegate void ServiceInfoHandler (object o, ServiceInfo info); + public class ServiceInfoArgs : EventArgs + { + private ServiceInfo service; + + public ServiceInfo Service { + get { return service; } + } + + public ServiceInfoArgs (ServiceInfo service) + { + this.service = service; + } + } + + public delegate void ServiceInfoHandler (object o, ServiceInfoArgs args); - public class ServiceBrowser : IDisposable + public class ServiceBrowser : BrowserBase, IDisposable { private IntPtr handle; private ArrayList infos = new ArrayList (); @@ -178,18 +192,24 @@ namespace Avahi info.Text = null; info.Flags = flags; - infos.Add (info); - - if (bevent == BrowserEvent.Added) { + switch (bevent) { + case BrowserEvent.Added: infos.Add (info); foreach (ServiceInfoHandler handler in addListeners) - handler (this, info); - } else { + handler (this, new ServiceInfoArgs (info)); + + break; + case BrowserEvent.Removed: infos.Remove (info); foreach (ServiceInfoHandler handler in removeListeners) - handler (this, info); + handler (this, new ServiceInfoArgs (info)); + + break; + default: + EmitBrowserEvent (bevent); + break; } } }