Пример #1
0
        private static void OnServiceResolved(object o, ServiceResolvedEventArgs args)
        {
            IResolvableService service = o as IResolvableService;

            string ip     = service.HostEntry.AddressList[0].ToString();
            string serial = "";

            ITxtRecord record       = service.TxtRecord;
            int        record_count = record != null ? record.Count : 0;

            if (record_count > 0)
            {
                for (int i = 0, n = record.Count; i < n; i++)
                {
                    TxtRecordItem item = record.GetItemAt(i);
                    if (item.Key == "device")
                    {
                        serial = item.ValueString;
                        Regex regexASNSerial = new Regex(@"AS\w{8}");
                        Match match;

                        match = regexASNSerial.Match(serial);

                        if (match.Success)
                        {
                            name2Serial.Add(args.Service.Name, serial);
                            serial2IP.Add(serial, ip);
                            Console.WriteLine("Found Aroma Shooter: serial = {0}, IP = {1}.", serial, ip);
                        }
                    }
                }
            }
        }
Пример #2
0
    private static void OnServiceResolved(object o, ServiceResolvedEventArgs args)
    {
        IResolvableService service = o as IResolvableService;

        Console.Write("*** Resolved name = '{0}', host ip = '{1}', hostname = {2}, port = '{3}', " +
                      "interface = '{4}', address type = '{5}'",
                      service.FullName, service.HostEntry.AddressList[0], service.HostEntry.HostName, service.Port,
                      service.NetworkInterface, service.AddressProtocol);

        ITxtRecord record       = service.TxtRecord;
        int        record_count = record != null ? record.Count : 0;

        if (record_count > 0)
        {
            Console.Write(", TXT Record = [");
            for (int i = 0, n = record.Count; i < n; i++)
            {
                TxtRecordItem item = record.GetItemAt(i);
                Console.Write("{0} = '{1}'", item.Key, item.ValueString);
                if (i < n - 1)
                {
                    Console.Write(", ");
                }
            }
            Console.WriteLine("]");
        }
        else
        {
            Console.WriteLine("");
        }
    }
Пример #3
0
    private static void OnServiceResolved(object o, ServiceResolvedEventArgs args)
    {
        IResolvableService service = o as IResolvableService;

        Console.Write("*** Resolved name = '{0}', port = '{1}', interface = '{2}'",
                      service.FullName, service.Port, service.NetworkInterface);
        foreach (System.Net.IPAddress j in service.HostEntry.AddressList)
        {
            Console.Write("host = '{0}'", j);
        }

        ITxtRecord record       = service.TxtRecord;
        int        record_count = record != null ? record.Count : 0;

        if (record_count > 0)
        {
            Console.Write(", TXT Record = [");
            for (int i = 0, n = record.Count; i < n; i++)
            {
                TxtRecordItem item = record.GetItemAt(i);
                Console.Write("{0} = '{1}'", item.Key, item.ValueString);
                if (i < n - 1)
                {
                    Console.Write(", ");
                }
            }
            Console.WriteLine("]");
        }
        else
        {
            Console.WriteLine("");
        }
    }
Пример #4
0
        private void OnServiceResolved(object o, ServiceResolvedEventArgs args)
        {
            IResolvableService service = o as IResolvableService;

            if (service == null)
            {
                return;
            }

            Log.DebugFormat("Resolved RAOP service at {0}", service.HostEntry.AddressList[0]);

            ITxtRecord record = service.TxtRecord;

            string version = String.Empty;
            int    sample_size = 16, sample_rate = 44100, channels = 2;

            for (int i = 0, n = record.Count; i < n; i++)
            {
                TxtRecordItem item = record.GetItemAt(i);
                switch (item.Key)
                {
                case "vs":
                    version = item.ValueString;
                    break;

                case "ss":
                    sample_size = Convert.ToInt32(item.ValueString);
                    break;

                case "sr":
                    sample_rate = Convert.ToInt32(item.ValueString);
                    break;

                case "ch":
                    channels = Convert.ToInt32(item.ValueString);
                    break;
                }
            }

            lock (speakers) {
                // TODO: better Name
                speakers.Add(new RemoteSpeaker(service.HostEntry.HostName,
                                               service.HostEntry.AddressList[0], service.Port,
                                               version, sample_rate, sample_size, channels));
            }

            EventHandler handler = SpeakersChanged;

            if (handler != null)
            {
                handler(this, EventArgs.Empty);
            }
        }
Пример #5
0
        public void Register()
        {
            lock (eg_mutex) {
                if (entry_group != null)
                {
                    entry_group.Reset();
                }
                else
                {
                    entry_group = new AV.EntryGroup(client);
                    entry_group.StateChanged += OnEntryGroupStateChanged;
                }

                try {
                    string [] rendered_txt_record = null;

                    if (txt_record != null && txt_record.Count > 0)
                    {
                        rendered_txt_record = new string[txt_record.Count];
                        for (int i = 0; i < txt_record.Count; i++)
                        {
                            TxtRecordItem item = txt_record.GetItemAt(i);
                            rendered_txt_record[i] = String.Format("{0}={1}",
                                                                   item.Key, item.ValueString);
                        }
                    }

                    entry_group.AddService(name, regtype, reply_domain, (ushort)port, rendered_txt_record);
                    entry_group.Commit();
                } catch (AV.ClientException e) {
                    if (e.ErrorCode == AV.ErrorCode.Collision && OnResponse(e.ErrorCode))
                    {
                        return;
                    }
                    else
                    {
                        throw e;
                    }
                }
            }
        }
Пример #6
0
        private void OnServiceResolved(object o, ServiceResolvedEventArgs args)
        {
            string             path    = "";
            IResolvableService service = o as IResolvableService;
            ITxtRecord         record  = service.TxtRecord;
            int record_count           = record != null ? record.Count : 0;

            if (record_count > 0)
            {
                for (int i = 0, n = record.Count; i < n; i++)
                {
                    TxtRecordItem item = record.GetItemAt(i);
                    if (item.Key.CompareTo("path") == 0)
                    {
                        path = item.ValueString;
                    }
                }
            }
            url = "http://" + service.HostEntry.AddressList[0] + ":" + service.Port + "/" + path;
            register();
        }
Пример #7
0
 public TxtRecordItem GetItemAt(int index)
 {
     return(record.GetItemAt(index));
 }