Example #1
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("");
        }
    }
        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);
                        }
                    }
                }
            }
        }
Example #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("");
        }
    }
        public void Remove(string key)
        {
            TxtRecordItem item = Find(key);

            if (item != null)
            {
                records.Remove(item);
            }
        }
 public bool MoveNext()
 {
     if(index < 0 || index >= record.Count) {
         return false;
     }
     
     current_item = record.GetItemAt(index++);
     return current_item != null;
 }
Example #6
0
        public bool MoveNext()
        {
            if (index < 0 || index >= record.Count)
            {
                return(false);
            }

            current_item = record.GetItemAt(index++);
            return(current_item != null);
        }
Example #7
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);
            }
        }
Example #8
0
        public ActionResult <TxtRecordItem> DeleteTxtRecord(TxtRecordItem item)
        {
            var result = _dns.DeleteTxtRecord(item);

            if (result.Success)
            {
                return(Ok(item));
            }
            else
            {
                return(NotFound(item));
            }
        }
Example #9
0
        public ApiResult AddTxtRecord(TxtRecordItem item)
        {
            var result = _provider.UpdateTxtRecord(item.Zone, item.Hostname, item.DescriptiveText);

            if (result.Success)
            {
                return(new ApiResult {
                    Success = true
                });
            }
            else
            {
                return(new ApiResult {
                    Success = false
                });
            }
        }
 public void Add(TxtRecordItem item)
 {
     if(handle == IntPtr.Zero) {
         throw new InvalidOperationException("This TXT Record is read only");
     }
 
     string key = item.Key;
     if(key[key.Length - 1] != '\0') {
         key += "\0";
     }
 
     ServiceError error = Native.TXTRecordSetValue(handle, encoding.GetBytes(key + "\0"), 
         (sbyte)item.ValueRaw.Length, item.ValueRaw);
         
     if(error != ServiceError.NoError) {
         throw new ServiceErrorException(error);
     }        
 }
 public void Add(TxtRecordItem item)
 {
     if(handle == IntPtr.Zero) {
         Log.To.Discovery.E(Tag, "Attempt to call Add() on a readonly object, throwing...");
         throw new InvalidOperationException("This TXT Record is read only");
     }
 
     string key = item.Key;
     if(key[key.Length - 1] != '\0') {
         key += "\0";
     }
 
     ServiceError error = Native.TXTRecordSetValue(handle, encoding.GetBytes(key + "\0"), 
         (sbyte)item.ValueRaw.Length, item.ValueRaw);
         
     if(error != ServiceError.NoError) {
         Log.To.Discovery.E(Tag, "Got error in TXTRecordSetValue ({0}), throwing...", error);
         throw new ServiceErrorException(error);
     }        
 }
        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;
                    }
                }
            }
        }
Example #13
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();
        }
        public void Add(TxtRecordItem item)
        {
            if (handle == IntPtr.Zero)
            {
                throw new InvalidOperationException("This TXT Record is read only");
            }

            string key = item.Key;

            if (key[key.Length - 1] != '\0')
            {
                key += "\0";
            }

            ServiceError error = Native.TXTRecordSetValue(handle, encoding.GetBytes(key + "\0"),
                                                          (sbyte)item.ValueRaw.Length, item.ValueRaw);

            if (error != ServiceError.NoError)
            {
                throw new ServiceErrorException(error);
            }
        }
Example #15
0
        public void Add(TxtRecordItem item)
        {
            if (handle == IntPtr.Zero)
            {
                Log.To.Discovery.E(Tag, "Attempt to call Add() on a readonly object, throwing...");
                throw new InvalidOperationException("This TXT Record is read only");
            }

            string key = item.Key;

            if (key[key.Length - 1] != '\0')
            {
                key += "\0";
            }

            ServiceError error = Native.TXTRecordSetValue(handle, encoding.GetBytes(key + "\0"),
                                                          (sbyte)item.ValueRaw.Length, item.ValueRaw);

            if (error != ServiceError.NoError)
            {
                Log.To.Discovery.E(Tag, "Got error in TXTRecordSetValue ({0}), throwing...", error);
                throw new ServiceErrorException(error);
            }
        }
 public void Reset()
 {
     index = 0;
     current_item = null;
 }
Example #17
0
 public void Reset()
 {
     index        = 0;
     current_item = null;
 }
 public void Add(TxtRecordItem item)
 {
     records.Add(item);
 }
Example #19
0
        private void button1_Click(object sender, EventArgs e)
        {
            ServiceBrowser browser = new ServiceBrowser();

            //
            // Configure the code that will be called back when the information
            // becomes available
            //
            browser.ServiceAdded += delegate(object o, ServiceBrowseEventArgs argss) {
                argss.Service.Resolved += delegate(object oo, ServiceResolvedEventArgs argsss) {
                    IResolvableService s = (IResolvableService)argsss.Service;

                    DataRow new_device = device_info.NewRow();
                    new_device["Name"] = s.Name;
                    new_device["IP"]   = s.HostEntry.AddressList[0];
                    new_device["Port"] = s.Port;
                    new_device["Attached Sensors/Actuators"] = s.TxtRecord.Count;


                    bool contains = device_info.AsEnumerable().Any(row => s.Name == row.Field <String>("Name"));
                    if (!contains)
                    {
                        device_info.Rows.Add(new_device);
                        DataTable device_components = new DataTable(s.Name);
                        device_components.Columns.Add("Type", typeof(string));
                        device_components.Columns.Add("OSC Address", typeof(string));
                        device_components.Columns.Add("Range", typeof(string));

                        for (int i = 0; i < s.TxtRecord.Count; i++)
                        {
                            DataRow       new_device_component = device_components.NewRow();
                            TxtRecordItem Component            = s.TxtRecord.BaseRecord.GetItemAt(i);

                            new_device_component["Type"] = Component.Key;

                            String[] ComponentList = Component.ValueString.Split(':');
                            new_device_component["OSC Address"] = ComponentList[0];
                            new_device_component["Range"]       = ComponentList[1];
                            device_components.Rows.Add(new_device_component);
                        }

                        devices.Tables.Add(device_components);
                    }
                };
                argss.Service.Resolve();
            };


            browser.Browse("_http._udp.", "local"); // Triggering the discovery request
            dataGridView1.DataSource = device_info; // Binding DataGridView with main table

            dataGridView1.Columns[0].Width = 220;
            dataGridView1.Columns[1].Width = 140;
            dataGridView1.Columns[2].Width = 100;
            dataGridView1.Columns[3].Width = 250;

            //
            // Adding Checkbox column in table
            //

            DataGridViewCheckBoxColumn chk = new DataGridViewCheckBoxColumn();

            chk.HeaderText = "Select";
            chk.Name       = "Checkbox";
            chk.Width      = dataGridView1.Width - dataGridView1.Columns[0].Width - dataGridView1.Columns[1].Width - dataGridView1.Columns[2].Width - dataGridView1.Columns[3].Width - 45;
            dataGridView1.Columns.Add(chk);
        }