]> git.meshlink.io Git - catta/blob - avahi-sharp/AvahiTest.cs
add initial mono bindings
[catta] / avahi-sharp / AvahiTest.cs
1 using System;
2 using System.Net;
3 using Gtk;
4 using Avahi;
5
6 public class AvahiTest {
7         private static Client client;
8
9         public static void Main () {
10                 client = new Client ();
11
12                 EntryGroup eg = new EntryGroup (client);
13                 eg.StateChanged += OnEntryGroupChanged;
14                 eg.AddService ("foobar2", "_daap._tcp", client.DomainName,
15                                444, new string[] { "foo", "bar", "baz" });
16                 eg.Commit ();
17
18                 Application.Run ();
19         }
20
21         private static void OnEntryGroupChanged (object o, EntryGroupState state)
22         {
23                 Console.WriteLine ("Entry group status: " + state);
24
25                 if (state == EntryGroupState.Established) {
26                         DomainBrowser browser = new DomainBrowser (client);
27                         browser.DomainAdded += OnDomainAdded;
28                 }
29         }
30
31         private static void OnDomainAdded (object o, DomainInfo info)
32         {
33                 Console.WriteLine ("Got domain added: " + info.Domain);
34                 ServiceTypeBrowser stb = new ServiceTypeBrowser (client, info.Domain);
35                 stb.ServiceTypeAdded += OnServiceTypeAdded;
36         }
37
38         private static void OnServiceTypeAdded (object o, ServiceTypeInfo info)
39         {
40                 Console.WriteLine ("Got service type: " + info.ServiceType);
41                 ServiceBrowser sb = new ServiceBrowser (client, info.ServiceType, info.Domain);
42                 sb.ServiceAdded += OnServiceAdded;
43         }
44
45         private static void OnServiceAdded (object o, ServiceInfo info)
46         {
47                 // Console.WriteLine ("Got service: " + info.Name);
48                 ServiceResolver resolver = new ServiceResolver (client, info);
49                 resolver.Found += OnServiceResolved;
50         }
51
52         private static void OnServiceResolved (object o, ServiceInfo info)
53         {
54                 Console.WriteLine ("Service '{0}' at {1}:{2}", info.Name, info.Host, info.Port);
55                 AddressResolver ar = new AddressResolver (client, info.Address);
56                 ar.Found += OnAddressResolved;
57         }
58
59         private static void OnAddressResolved (object o, string host, IPAddress address)
60         {
61                 Console.WriteLine ("Resolved {0} to {1}", address, host);
62                 HostNameResolver hr = new HostNameResolver (client, host);
63                 hr.Found += OnHostNameResolved;
64         }
65
66         private static void OnHostNameResolved (object o, string host, IPAddress address)
67         {
68                 Console.WriteLine ("Resolved {0} to {1}", host, address);
69         }
70 }