-/* $Id$ */
-
/***
This file is part of avahi.
UseWideArea = 128,
UseMulticast = 256
}
-
+
public enum EntryGroupState {
Uncommited,
Registering,
{
get { return state; }
}
-
+
public EntryGroupStateArgs (EntryGroupState state)
{
this.state = state;
internal delegate void EntryGroupCallback (IntPtr group, EntryGroupState state, IntPtr userdata);
public delegate void EntryGroupStateHandler (object o, EntryGroupStateArgs args);
-
+
public class EntryGroup : IDisposable
{
private Client client;
private IntPtr handle;
private EntryGroupCallback cb;
-
+
[DllImport ("avahi-client")]
private static extern IntPtr avahi_entry_group_new (IntPtr client, EntryGroupCallback cb, IntPtr userdata);
private static extern int avahi_entry_group_add_record (IntPtr group, int iface, Protocol proto,
PublishFlags flags, byte[] name, RecordClass clazz,
RecordType type, uint ttl, byte[] rdata, int size);
-
+
[DllImport ("avahi-client")]
private static extern void avahi_entry_group_free (IntPtr group);
private static extern IntPtr avahi_alternative_service_name (byte[] name);
public event EntryGroupStateHandler StateChanged;
-
+
public EntryGroupState State
{
get {
}
}
}
-
+
public EntryGroup (Client client)
{
this.client = client;
private void AddService (int iface, Protocol proto, PublishFlags flags, string name, string type,
string domain, string host, UInt16 port, IntPtr list)
{
- int ret = avahi_entry_group_add_service_strlst (handle, iface, proto, flags,
+ int ret;
+
+ lock (client) {
+ ret = avahi_entry_group_add_service_strlst (handle, iface, proto, flags,
Utility.StringToBytes (name),
Utility.StringToBytes (type),
Utility.StringToBytes (domain),
Utility.StringToBytes (host), port, list);
-
+ }
+
avahi_string_list_free (list);
-
+
if (ret < 0) {
client.ThrowError ();
}
UpdateService (iface, proto, flags, name, type, domain, list);
}
-
+
private void UpdateService (int iface, Protocol proto, PublishFlags flags, string name, string type,
string domain, IntPtr list)
{