public void Browse(uint interfaceIndex, AddressProtocol addressProtocol, string regtype, string domain) { lock (this) { Dispose(); ObjectPath object_path = DBusManager.Server.ServiceBrowserNew( AvahiUtils.FromMzcInterface(interfaceIndex), AvahiUtils.FromMzcProtocol(addressProtocol), regtype ?? String.Empty, domain ?? String.Empty, LookupFlags.None); service_browser = DBusManager.GetObject <IAvahiServiceBrowser> (object_path); } service_browser.ItemNew += OnItemNew; service_browser.ItemRemove += OnItemRemove; }
public void Browse(uint interfaceIndex, AddressProtocol addressProtocol, string regtype, string domain) { DBusManager.Bus.TrapSignals (); lock (this) { Dispose (); ObjectPath object_path = DBusManager.Server.ServiceBrowserNew ( AvahiUtils.FromMzcInterface (interfaceIndex), AvahiUtils.FromMzcProtocol (addressProtocol), regtype ?? String.Empty, domain ?? String.Empty, LookupFlags.None); service_browser = DBusManager.GetObject<IAvahiServiceBrowser> (object_path); } service_browser.ItemNew += OnItemNew; service_browser.ItemRemove += OnItemRemove; DBusManager.Bus.UntrapSignals (); }
public void Dispose() { lock (this) { IAvahiServiceBrowser service_browser = this.service_browser; if (service_browser != null) { this.service_browser = null; service_browser.ItemNew -= OnItemNew; service_browser.ItemRemove -= OnItemRemove; service_browser.Free(); } if (services.Count > 0) { List <BrowseService> services_list = new List <BrowseService> (services.Values); services.Clear(); // Clear first so we no-op if we Dispose() again foreach (BrowseService service in services_list) { service.Dispose(); } } } }