Example #1
0
        private ObjectDataFieldControl CreateControl(long typeId, int member, ObjectInfo objInfo)
        {
            ObjectDataFieldControl c = null;

            Safir.Dob.Typesystem.MemberType memberType;
            long   complexType;
            int    typeSize;
            bool   isArray;
            int    arrLength;
            string memberName = Safir.Dob.Typesystem.Members.GetInfo(typeId, member, out memberType, out complexType, out typeSize, out isArray, out arrLength);

            switch (memberType)
            {
            case Safir.Dob.Typesystem.MemberType.EnumerationMemberType:
            {
                c = new EnumField(objInfo, member, complexType, memberName, arrLength);
                break;
            }

            case Safir.Dob.Typesystem.MemberType.BooleanMemberType:
            {
                c = new BoolField(objInfo, member, memberName, arrLength);
                break;
            }

            case Safir.Dob.Typesystem.MemberType.Int32MemberType:
            {
                c = new Int32Field(objInfo, member, memberName, arrLength);
                break;
            }

            case Safir.Dob.Typesystem.MemberType.Int64MemberType:
            {
                c = new Int64Field(objInfo, member, memberName, arrLength);
                break;
            }

            case Safir.Dob.Typesystem.MemberType.ChannelIdMemberType:
            {
                c = new ChannelIdField(objInfo, member, memberName, arrLength);
                break;
            }

            case Safir.Dob.Typesystem.MemberType.HandlerIdMemberType:
            {
                c = new HandlerIdField(objInfo, member, memberName, arrLength);
                break;
            }

            case Safir.Dob.Typesystem.MemberType.EntityIdMemberType:
            {
                c = new EntityIdField(objInfo, member, memberName, arrLength);
                break;
            }

            case Safir.Dob.Typesystem.MemberType.InstanceIdMemberType:
            {
                c = new InstanceIdField(objInfo, member, memberName, arrLength);
                break;
            }

            case Safir.Dob.Typesystem.MemberType.StringMemberType:
            {
                c = new StringField(objInfo, member, memberName, arrLength, typeSize);
                break;
            }

            case Safir.Dob.Typesystem.MemberType.TypeIdMemberType:
            {
                c = new TypeIdField(objInfo, member, memberName, arrLength);
                break;
            }

            case Safir.Dob.Typesystem.MemberType.ObjectMemberType:
            {
                c = new ObjectField(objInfo, member, complexType, memberName, arrLength);
                break;
            }

            case Safir.Dob.Typesystem.MemberType.BinaryMemberType:
            {
                c = new BinaryField(objInfo, member, memberName, arrLength);
                break;
            }

            case Safir.Dob.Typesystem.MemberType.Float32MemberType:
            case Safir.Dob.Typesystem.MemberType.Ampere32MemberType:
            case Safir.Dob.Typesystem.MemberType.CubicMeter32MemberType:
            case Safir.Dob.Typesystem.MemberType.Hertz32MemberType:
            case Safir.Dob.Typesystem.MemberType.Joule32MemberType:
            case Safir.Dob.Typesystem.MemberType.Kelvin32MemberType:
            case Safir.Dob.Typesystem.MemberType.Kilogram32MemberType:
            case Safir.Dob.Typesystem.MemberType.Meter32MemberType:
            case Safir.Dob.Typesystem.MemberType.MeterPerSecond32MemberType:
            case Safir.Dob.Typesystem.MemberType.MeterPerSecondSquared32MemberType:
            case Safir.Dob.Typesystem.MemberType.Newton32MemberType:
            case Safir.Dob.Typesystem.MemberType.Pascal32MemberType:
            case Safir.Dob.Typesystem.MemberType.Radian32MemberType:
            case Safir.Dob.Typesystem.MemberType.RadianPerSecond32MemberType:
            case Safir.Dob.Typesystem.MemberType.RadianPerSecondSquared32MemberType:
            case Safir.Dob.Typesystem.MemberType.Second32MemberType:
            case Safir.Dob.Typesystem.MemberType.SquareMeter32MemberType:
            case Safir.Dob.Typesystem.MemberType.Steradian32MemberType:
            case Safir.Dob.Typesystem.MemberType.Volt32MemberType:
            case Safir.Dob.Typesystem.MemberType.Watt32MemberType:
            {
                c = new Float32Field(objInfo, member, memberName, arrLength,
                                     Safir.Dob.Typesystem.Members.GetTypeName(typeId, member));
                break;
            }

            case Safir.Dob.Typesystem.MemberType.Float64MemberType:
            case Safir.Dob.Typesystem.MemberType.Ampere64MemberType:
            case Safir.Dob.Typesystem.MemberType.CubicMeter64MemberType:
            case Safir.Dob.Typesystem.MemberType.Hertz64MemberType:
            case Safir.Dob.Typesystem.MemberType.Joule64MemberType:
            case Safir.Dob.Typesystem.MemberType.Kelvin64MemberType:
            case Safir.Dob.Typesystem.MemberType.Kilogram64MemberType:
            case Safir.Dob.Typesystem.MemberType.Meter64MemberType:
            case Safir.Dob.Typesystem.MemberType.MeterPerSecond64MemberType:
            case Safir.Dob.Typesystem.MemberType.MeterPerSecondSquared64MemberType:
            case Safir.Dob.Typesystem.MemberType.Newton64MemberType:
            case Safir.Dob.Typesystem.MemberType.Pascal64MemberType:
            case Safir.Dob.Typesystem.MemberType.Radian64MemberType:
            case Safir.Dob.Typesystem.MemberType.RadianPerSecond64MemberType:
            case Safir.Dob.Typesystem.MemberType.RadianPerSecondSquared64MemberType:
            case Safir.Dob.Typesystem.MemberType.Second64MemberType:
            case Safir.Dob.Typesystem.MemberType.SquareMeter64MemberType:
            case Safir.Dob.Typesystem.MemberType.Steradian64MemberType:
            case Safir.Dob.Typesystem.MemberType.Volt64MemberType:
            case Safir.Dob.Typesystem.MemberType.Watt64MemberType:
            {
                c = new Float64Field(objInfo, member, memberName, arrLength,
                                     Safir.Dob.Typesystem.Members.GetTypeName(typeId, member));
                break;
            }
            }
            if (c != null)
            {
                c.ParentObjectEditPanel = this;
            }
            return(c);
        }
Example #2
0
        /// <summary>
        /// Create a new DNS resolver client.
        /// </summary>
        /// <param name="ManualDNSServers">A list of manually configured DNS servers to query.</param>
        /// <param name="SearchForIPv4DNSServers">If yes, the DNS client will query a list of DNS servers from the IPv4 network configuration.</param>
        /// <param name="SearchForIPv6DNSServers">If yes, the DNS client will query a list of DNS servers from the IPv6 network configuration.</param>
        public DNSClient(IEnumerable <IPSocket> ManualDNSServers,
                         Boolean SearchForIPv4DNSServers = true,
                         Boolean SearchForIPv6DNSServers = true)

        {
            this._DNSCache        = new DNSCache();
            this.RecursionDesired = true;
            this.QueryTimeout     = TimeSpan.FromSeconds(23.5);

            _DNSServers = new List <IPSocket>(ManualDNSServers);

            #region Search for IPv4/IPv6 DNS Servers...

            if (SearchForIPv4DNSServers)
            {
                _DNSServers.AddRange(NetworkInterface.
                                     GetAllNetworkInterfaces().
                                     Where(NI => NI.OperationalStatus == OperationalStatus.Up).
                                     SelectMany(NI => NI.GetIPProperties().DnsAddresses).
                                     Where(IPAddress => IPAddress.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork).
                                     Select(IPAddress => new IPSocket(new IPv4Address(IPAddress), new IPPort(53))));
            }

            if (SearchForIPv6DNSServers)
            {
                _DNSServers.AddRange(NetworkInterface.
                                     GetAllNetworkInterfaces().
                                     Where(NI => NI.OperationalStatus == OperationalStatus.Up).
                                     SelectMany(NI => NI.GetIPProperties().DnsAddresses).
                                     Where(IPAddress => IPAddress.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6).
                                     Select(IPAddress => new IPSocket(new IPv6Address(IPAddress), new IPPort(53))));
            }

            #endregion

            #region Reflect ResourceRecordTypes

            this._RRLookup = new Dictionary <UInt16, ConstructorInfo>();

            FieldInfo       TypeIdField;
            ConstructorInfo Constructor;

            foreach (var _ActualType in typeof(ADNSResourceRecord).
                     Assembly.GetTypes().
                     Where(type => type.IsClass &&
                           !type.IsAbstract &&
                           type.IsSubclassOf(typeof(ADNSResourceRecord))))
            {
                TypeIdField = _ActualType.GetField("TypeId");

                if (TypeIdField == null)
                {
                    throw new ArgumentException("Constant field 'TypeId' of type '" + _ActualType.Name + "' was not found!");
                }

                Constructor = _ActualType.GetConstructor(new Type[2] {
                    typeof(String), typeof(Stream)
                });

                if (Constructor == null)
                {
                    throw new ArgumentException("Constructor<String, Stream> of type '" + _ActualType.Name + "' was not found!");
                }

                _RRLookup.Add((UInt16)TypeIdField.GetValue(_ActualType), Constructor);
            }

            #endregion
        }