X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=avahi-sharp%2FClient.cs;h=d9466bcb95edd63d32c169d4a5841fcf853d9c44;hb=cc272cf44768c9292879a9ee43783fec4b510ffd;hp=783c00342f6fdd6b6f29783b8a08c3ce255b4ebb;hpb=9247af4048229c9b777791fd087e2068dd785a7d;p=catta diff --git a/avahi-sharp/Client.cs b/avahi-sharp/Client.cs index 783c003..d9466bc 100644 --- a/avahi-sharp/Client.cs +++ b/avahi-sharp/Client.cs @@ -55,6 +55,23 @@ namespace Avahi Collision, Disconnected = 100 } + + [Flags] + public enum LookupFlags { + None, + UseWideArea, + UseMulticast, + NoTxt, + NoAddress + } + + [Flags] + public enum LookupResultFlags { + None, + Cached, + WideArea, + Multicast + } public class Client : IDisposable { @@ -108,6 +125,14 @@ 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 ("avahi-client")] + private static extern int avahi_client_is_service_local (IntPtr client, int iface, Protocol proto, + IntPtr name, IntPtr type, IntPtr domain); + + [DllImport ("libc")] private static extern int poll(IntPtr ufds, uint nfds, int timeout); @@ -163,6 +188,15 @@ namespace Avahi } } + public uint LocalServiceCookie + { + get { + lock (this) { + return avahi_client_get_local_service_cookie (handle); + } + } + } + internal int LastError { get { @@ -210,6 +244,27 @@ namespace Avahi } } + public bool IsServiceLocal (ServiceInfo service) + { + return IsServiceLocal (service.NetworkInterface, service.Protocol, service.Name, + service.ServiceType, service.Domain); + } + + public bool IsServiceLocal (int iface, Protocol proto, string name, string type, string domain) + { + IntPtr namePtr = Utility.StringToPtr (name); + IntPtr typePtr = Utility.StringToPtr (type); + IntPtr domainPtr = Utility.StringToPtr (domain); + + int result = avahi_client_is_service_local (handle, iface, proto, namePtr, typePtr, domainPtr); + + Utility.Free (namePtr); + Utility.Free (typePtr); + Utility.Free (domainPtr); + + return result == 1; + } + internal void CheckError () { int error = LastError;