X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=avahi-sharp%2FClient.cs;h=73b6f57c0b85f19db23ea3e84c51d027e928a161;hb=94d2753047cff1e9223e42736884e4d51348b45a;hp=c3584c59b13d450ab67649bf6811b937fd266c92;hpb=264700bf97de2e4430494cb41201950162fba020;p=catta diff --git a/avahi-sharp/Client.cs b/avahi-sharp/Client.cs index c3584c5..73b6f57 100644 --- a/avahi-sharp/Client.cs +++ b/avahi-sharp/Client.cs @@ -29,12 +29,15 @@ namespace Avahi { internal enum ResolverEvent { Found, - Timeout + Failure } internal enum BrowserEvent { Added, - Removed + Removed, + CacheExhausted, + AllForNow, + Failure } internal delegate int PollCallback (IntPtr ufds, uint nfds, int timeout); @@ -43,9 +46,9 @@ namespace Avahi public delegate void ClientStateHandler (object o, ClientState state); public enum Protocol { - Unspecified = 0, - IPv4 = 2, - IPv6 = 10 + Unspecified = -1, + IPv4 = 0, + IPv6 = 1 } public enum ClientState { @@ -55,6 +58,24 @@ namespace Avahi Collision, Disconnected = 100 } + + [Flags] + public enum LookupFlags { + None = 0, + UseWideArea = 1, + UseMulticast = 4, + NoAddress = 8 + } + + [Flags] + public enum LookupResultFlags { + None = 0, + Cached = 1, + WideArea = 2, + Multicast = 4, + Local = 8, + OurOwn = 16, + } public class Client : IDisposable { @@ -100,7 +121,7 @@ namespace Avahi private static extern void avahi_simple_poll_free (IntPtr spoll); [DllImport ("avahi-common")] - private static extern int avahi_simple_poll_iterate (IntPtr spoll, int timeout); + private static extern int avahi_simple_poll_loop (IntPtr spoll); [DllImport ("avahi-common")] private static extern void avahi_simple_poll_set_func (IntPtr spoll, PollCallback cb); @@ -108,6 +129,10 @@ namespace Avahi [DllImport ("avahi-common")] private static extern void avahi_simple_poll_quit (IntPtr spoll); + [DllImport ("avahi-client")] + private static extern uint avahi_client_get_local_service_cookie (IntPtr client); + + [DllImport ("libc")] private static extern int poll(IntPtr ufds, uint nfds, int timeout); @@ -163,11 +188,20 @@ namespace Avahi } } - internal int LastError + public uint LocalServiceCookie { get { lock (this) { - return avahi_client_errno (handle); + return avahi_client_get_local_service_cookie (handle); + } + } + } + + internal ErrorCode LastError + { + get { + lock (this) { + return (ErrorCode) avahi_client_errno (handle); } } } @@ -212,9 +246,9 @@ namespace Avahi internal void CheckError () { - int error = LastError; + ErrorCode error = LastError; - if (error != 0) + if (error != ErrorCode.Ok) throw new ClientException (error); } @@ -234,10 +268,7 @@ namespace Avahi private void PollLoop () { try { lock (this) { - while (true) { - if (avahi_simple_poll_iterate (spoll, -1) != 0) - break; - } + avahi_simple_poll_loop (spoll); } } catch (ThreadAbortException e) { } catch (Exception e) {