summaryrefslogtreecommitdiffstats
path: root/trunk/avahi-sharp/AvahiTest.cs
diff options
context:
space:
mode:
authorFederico Lucifredi <flucifredi@acm.org>2006-12-19 19:11:45 +0000
committerFederico Lucifredi <flucifredi@acm.org>2006-12-19 19:11:45 +0000
commit6386804f93ee272fcff73459a9cfe0b847101609 (patch)
tree26fa54c9fdaeb608560ccaa249f153e04e6e5798 /trunk/avahi-sharp/AvahiTest.cs
parent16ed6d63c6c231cb5e606421ae3a245b2948185f (diff)
Branching for wide-area publishing work
git-svn-id: file:///home/lennart/svn/public/avahi/branches/federico@1344 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe
Diffstat (limited to 'trunk/avahi-sharp/AvahiTest.cs')
-rw-r--r--trunk/avahi-sharp/AvahiTest.cs133
1 files changed, 133 insertions, 0 deletions
diff --git a/trunk/avahi-sharp/AvahiTest.cs b/trunk/avahi-sharp/AvahiTest.cs
new file mode 100644
index 0000000..ba4d59b
--- /dev/null
+++ b/trunk/avahi-sharp/AvahiTest.cs
@@ -0,0 +1,133 @@
+/* $Id$ */
+
+/***
+ This file is part of avahi.
+
+ avahi is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of the
+ License, or (at your option) any later version.
+
+ avahi is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
+ Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with avahi; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ USA.
+***/
+
+using System;
+using System.Collections;
+using System.Text;
+using System.Net;
+using Avahi;
+
+public class AvahiTest {
+ private static Client client;
+ private static ArrayList objects = new ArrayList ();
+
+ public static void Main () {
+ client = new Client ();
+
+ Console.WriteLine ("joined service name: " + Client.JoinServiceName ("FooBar", "_foo", "local"));
+
+ EntryGroup eg = new EntryGroup (client);
+ eg.StateChanged += OnEntryGroupChanged;
+ eg.AddService ("foobar2", "_dingdong._tcp", client.DomainName,
+ 444, new string[] { "foo=stuff", "bar=stuff2", "baz=stuff3" });
+ eg.Commit ();
+ BrowseServiceTypes ("local");
+ Console.WriteLine ("Press enter to quit");
+ Console.ReadLine ();
+ client.Dispose ();
+ }
+
+ private static void OnEntryGroupChanged (object o, EntryGroupStateArgs args)
+ {
+ Console.WriteLine ("Entry group status: " + args.State);
+ if (args.State == EntryGroupState.Established) {
+ DomainBrowser browser = new DomainBrowser (client);
+ objects.Add (browser);
+
+ browser.DomainAdded += OnDomainAdded;
+ }
+ }
+
+ private static void OnDomainAdded (object o, DomainInfoArgs args)
+ {
+ Console.WriteLine ("Got domain added: " + args.Domain.Domain);
+ // BrowseServiceTypes (args.Domain.Domain);
+ }
+
+ private static void BrowseServiceTypes (string domain)
+ {
+ ServiceTypeBrowser stb = new ServiceTypeBrowser (client, domain);
+ objects.Add (stb);
+
+ stb.CacheExhausted += OnCacheExhausted;
+ stb.ServiceTypeAdded += OnServiceTypeAdded;
+ }
+
+ private static void OnCacheExhausted (object o, EventArgs args)
+ {
+ Console.WriteLine ("Cache is exhausted");
+ }
+
+ private static void OnServiceTypeAdded (object o, ServiceTypeInfoArgs args)
+ {
+ Console.WriteLine ("Got service type: " + args.ServiceType.ServiceType);
+ ServiceBrowser sb = new ServiceBrowser (client, args.ServiceType.ServiceType, args.ServiceType.Domain);
+ objects.Add (sb);
+
+ sb.ServiceAdded += OnServiceAdded;
+ }
+
+ private static void OnServiceAdded (object o, ServiceInfoArgs args)
+ {
+ // Console.WriteLine ("Got service: " + info.Name);
+ ServiceResolver resolver = new ServiceResolver (client, args.Service);
+ objects.Add (resolver);
+ resolver.Found += OnServiceResolved;
+ }
+
+ private static void OnServiceResolved (object o, ServiceInfoArgs args)
+ {
+ objects.Remove (o);
+
+ Console.WriteLine ("Service '{0}' at {1}:{2}", args.Service.Name, args.Service.HostName, args.Service.Port);
+ foreach (byte[] bytes in args.Service.Text) {
+ Console.WriteLine ("Text: " + Encoding.UTF8.GetString (bytes));
+ }
+
+ AddressResolver ar = new AddressResolver (client, args.Service.Address);
+ objects.Add (ar);
+
+ ar.Found += OnAddressResolved;
+ ar.Failed += OnAddressResolverFailed;
+ }
+
+ private static void OnAddressResolverFailed (object o, ErrorCodeArgs args)
+ {
+ Console.WriteLine ("Failed to resolve '{0}': {1}", (o as AddressResolver).Address, args.ErrorCode);
+ }
+
+ private static void OnAddressResolved (object o, HostAddressArgs args)
+ {
+ objects.Remove (o);
+
+ Console.WriteLine ("Resolved {0} to {1}", args.Address, args.Host);
+ HostNameResolver hr = new HostNameResolver (client, args.Host);
+ objects.Add (hr);
+
+ hr.Found += OnHostNameResolved;
+ }
+
+ private static void OnHostNameResolved (object o, HostAddressArgs args)
+ {
+ objects.Remove (o);
+ Console.WriteLine ("Resolved {0} to {1}", args.Host, args.Address);
+ }
+}