示例#1
0
        private DHCP_Server()
        {
            ip_addr         = "192.168.1.1";
            default_gateway = "192.168.1.254";
            ip_range        = 252;

            _devices = new DeviceList();

            // adiciona manualmente alguns dispositivos ao servidor
            for (int i = 0; i < 11; i++, ip_range--)
            {
                if (i % 2 == 1)
                {
                    // usando adapter aqui
                    _devices[i] = new iPhoneAdapter($"Device {i+1}", $"192.168.1.{254-ip_range}", default_gateway);
                }
                else
                {
                    _devices[i] = new AndroidAdapter($"Device {i+1}", $"192.168.1.{254-ip_range}", default_gateway);
                }
                // a linha abaixo demostra a inicialização única da instância
                // Console.WriteLine($"Device {i+1}, ip address: 192.168.1.{254-ip_range}, {default_gateway}");
            }

            _devices_iterator = _devices.CreateIterator();
        }
示例#2
0
        static void Main(string[] args)
        {
            // inicializar variaveis com a instância do servidor dhcp
            var s1 = DHCP_Server.Instance();
            var s2 = DHCP_Server.Instance();
            var s3 = DHCP_Server.Instance();
            var s4 = DHCP_Server.Instance();

            // verifica se as variáveis utilizam a mesma instância
            if (s1 == s2 && s2 == s3 && s3 == s4)
            {
                Console.WriteLine("Mesma instância.");
            }

            // o bloco abaixo coloca as variáveis de servidor numa lista para iterar sobre e listar os dispositivos, mostrando que são a mesma insância
            // tanto na inicialização como na execução
            //
            // var servers = new List<DHCP_Server>(){s1, s2, s3, s4};
            // foreach (var server in servers)
            // {
            //     Console.WriteLine(String.Join("\n ", server.GetDevices().Select(x => x.GetAttributes())));
            // }

            // usando iterator aqui
            myIterator it = s1._devices_iterator;

            List <DeviceCareTaker> dct_list = new List <DeviceCareTaker>();

            int cont = 0;

            for (Device dev = it.First(); !it.IsOver; dev = it.Next())
            {
                dct_list.Add(new DeviceCareTaker());
                dct_list[cont++]._memento = dev.SaveState();
                dev.default_gateway       = "No gateway";
                Console.WriteLine(dev.GetAttributes());
            }
            cont = 0;
            for (Device dev = it.First(); !it.IsOver; dev = it.Next())
            {
                dev.RestoreState(dct_list[cont++]._memento);
                Console.WriteLine(dev.GetAttributes());
            }
        }