]> git.meshlink.io Git - catta/blobdiff - avahi-sharp/AddressResolver.cs
Update man pages for new avahi-publish-* tools
[catta] / avahi-sharp / AddressResolver.cs
index 038b0c9aef591cdafdba0183d9f90cb6115025bd..3231cbf492efa6c6f404890af982adaadfe02e16 100644 (file)
@@ -29,12 +29,12 @@ namespace Avahi
 {
 
     internal delegate void AddressResolverCallback (IntPtr resolver, int iface, Protocol proto,
-                                                    ResolverEvent revent, Protocol aproto, IntPtr address,
+                                                    ResolverEvent revent, IntPtr address,
                                                     IntPtr hostname, LookupResultFlags flags, IntPtr userdata);
 
     public delegate void HostAddressHandler (object o, string host, IPAddress address);
     
-    public class AddressResolver : IDisposable
+    public class AddressResolver : ResolverBase, IDisposable
     {
         private IntPtr handle;
         private Client client;
@@ -124,7 +124,7 @@ namespace Avahi
                 (foundListeners.Count == 0 && timeoutListeners.Count == 0))
                 return;
 
-            IntPtr addrPtr = Utility.StringToPtr (address.ToString ());
+            IntPtr addrPtr = Utility.AddressToPtr (address);
 
             lock (client) {
                 handle = avahi_address_resolver_new (client.Handle, iface, proto, addrPtr, flags,
@@ -147,21 +147,20 @@ namespace Avahi
         }
 
         private void OnAddressResolverCallback (IntPtr resolver, int iface, Protocol proto,
-                                                ResolverEvent revent, Protocol aproto, IntPtr address,
+                                                ResolverEvent revent, IntPtr address,
                                                 IntPtr hostname, LookupResultFlags flags, IntPtr userdata)
         {
-            if (revent == ResolverEvent.Found) {
+            switch (revent) {
+            case ResolverEvent.Found:
                 currentAddress = Utility.PtrToAddress (address);
                 currentHost = Utility.PtrToString (hostname);
 
                 foreach (HostAddressHandler handler in foundListeners)
                     handler (this, currentHost, currentAddress);
-            } else {
-                currentAddress = null;
-                currentHost = null;
-                
-                foreach (EventHandler handler in timeoutListeners)
-                    handler (this, new EventArgs ());
+                break;
+            case ResolverEvent.Failure:
+                EmitFailure (client.LastError);
+                break;
             }
         }
     }