private void OnServiceResolverCallback(IntPtr resolver, int iface, Protocol proto, ResolverEvent revent, IntPtr name, IntPtr type, IntPtr domain, IntPtr host, IntPtr address, UInt16 port, IntPtr txt, LookupResultFlags flags, IntPtr userdata) { ServiceInfo info; info.NetworkInterface = iface; info.Protocol = proto; info.Domain = Utility.PtrToString(domain); info.ServiceType = Utility.PtrToString(type); info.Name = Utility.PtrToString(name); info.HostName = Utility.PtrToString(host); info.Address = Utility.PtrToAddress(address); info.Port = port; if (proto == Protocol.IPv6) { info.Address.ScopeId = iface; } ArrayList txtlist = new ArrayList(); for (IntPtr l = txt; l != IntPtr.Zero; l = avahi_string_list_get_next(l)) { IntPtr buf = avahi_string_list_get_text(l); int len = avahi_string_list_get_size(l); byte[] txtbuf = new byte[len]; Marshal.Copy(buf, txtbuf, 0, len); txtlist.Add(txtbuf); } info.Text = (byte[][])txtlist.ToArray(typeof(byte[])); info.Flags = flags; switch (revent) { case ResolverEvent.Found: currentInfo = info; foreach (ServiceInfoHandler handler in foundListeners) { handler(this, new ServiceInfoArgs(info)); } break; case ResolverEvent.Failure: EmitFailure(client.LastError); break; } }
private void OnHostNameResolverCallback(IntPtr resolver, int iface, Protocol proto, ResolverEvent revent, IntPtr hostname, IntPtr address, LookupResultFlags flags, IntPtr userdata) { switch (revent) { case ResolverEvent.Found: currentAddress = Utility.PtrToAddress(address); currentHost = Utility.PtrToString(hostname); foreach (HostAddressHandler handler in foundListeners) { handler(this, new HostAddressArgs(currentHost, currentAddress)); } break; case ResolverEvent.Failure: EmitFailure(client.LastError); break; } }
private void OnServiceResolverCallback(IntPtr resolver, int iface, Protocol proto, ResolverEvent revent, IntPtr name, IntPtr type, IntPtr domain, IntPtr host, IntPtr address, UInt16 port, IntPtr txt, LookupResultFlags flags, IntPtr userdata) { ServiceInfo info; info.NetworkInterface = iface; info.Protocol = proto; info.Domain = Utility.PtrToString (domain); info.ServiceType = Utility.PtrToString (type); info.Name = Utility.PtrToString (name); info.HostName = Utility.PtrToString (host); info.Address = Utility.PtrToAddress (address); info.Port = port; ArrayList txtlist = new ArrayList (); for (IntPtr l = txt; l != IntPtr.Zero; l = avahi_string_list_get_next (l)) { IntPtr buf = avahi_string_list_get_text (l); int len = avahi_string_list_get_size (l); byte[] txtbuf = new byte[len]; Marshal.Copy (buf, txtbuf, 0, len); txtlist.Add (txtbuf); } info.Text = (byte[][]) txtlist.ToArray (typeof (byte[])); info.Flags = flags; switch (revent) { case ResolverEvent.Found: currentInfo = info; foreach (ServiceInfoHandler handler in foundListeners) handler (this, new ServiceInfoArgs (info)); break; case ResolverEvent.Failure: EmitFailure (client.LastError); break; } }
private void OnAddressResolverCallback(IntPtr resolver, int iface, Protocol proto, ResolverEvent revent, IntPtr address, IntPtr hostname, LookupResultFlags flags, IntPtr userdata) { switch (revent) { case ResolverEvent.Found: currentAddress = Utility.PtrToAddress (address); currentHost = Utility.PtrToString (hostname); foreach (HostAddressHandler handler in foundListeners) handler (this, new HostAddressArgs (currentHost, currentAddress)); break; case ResolverEvent.Failure: EmitFailure (client.LastError); break; } }