internal delegate int PollCallback (IntPtr ufds, uint nfds, int timeout);
internal delegate void ClientCallback (IntPtr client, ClientState state, IntPtr userData);
- public delegate void ClientStateHandler (object o, ClientState state);
+ public delegate void ClientStateHandler (object o, ClientStateArgs state);
+ public class ClientStateArgs : EventArgs
+ {
+ private ClientState state;
+
+ public ClientState State
+ {
+ get { return state; }
+ }
+
+ public ClientStateArgs (ClientState state)
+ {
+ this.state = state;
+ }
+ }
+
public enum Protocol {
Unspecified = -1,
IPv4 = 0,
Registering = ServerState.Registering,
Running = ServerState.Running,
Collision = ServerState.Collision,
- Disconnected = 100
+ Failure = 100,
+ Connecting = 101
}
[Flags]
Local = 8,
OurOwn = 16,
}
+
+ [Flags]
+ public enum ClientFlags {
+ None = 0,
+ IgnoreUserConfig = 1,
+ NoFail = 2
+ }
public class Client : IDisposable
{
private Thread thread;
[DllImport ("avahi-client")]
- private static extern IntPtr avahi_client_new (IntPtr poll, ClientCallback handler,
+ private static extern IntPtr avahi_client_new (IntPtr poll, ClientFlags flags, ClientCallback handler,
IntPtr userData, out int error);
[DllImport ("avahi-client")]
}
}
- public Client ()
+ public Client (ClientFlags flags)
{
spoll = avahi_simple_poll_new ();
cb = OnClientCallback;
int error;
- handle = avahi_client_new (poll, cb, IntPtr.Zero, out error);
+ handle = avahi_client_new (poll, flags, cb, IntPtr.Zero, out error);
if (error != 0)
throw new ClientException (error);
thread.Start ();
}
+ public Client () : this (ClientFlags.None) {
+ }
+
~Client ()
{
Dispose ();
private void OnClientCallback (IntPtr client, ClientState state, IntPtr userData)
{
if (StateChanged != null)
- StateChanged (this, state);
+ StateChanged (this, new ClientStateArgs (state));
}
private int OnPollCallback (IntPtr ufds, uint nfds, int timeout) {