Esempio n. 1
0
        public static Server Deserialise(XmlReader reader)
        {
            Server result = new Server();
            string value;

            while (reader.Read())
            {
                if (reader.NodeType == XmlNodeType.Element)
                {
                    switch (reader.Name)
                    {
                    case "ShortServerID":
                        value = reader.ReadInnerXml();
                        int shortServerID;
                        if (int.TryParse(value, out shortServerID))
                        {
                            result.ShortServerID = shortServerID;
                        }
                        break;

                    case "Lifetime":
                        value = reader.ReadInnerXml();
                        uint lifetime;
                        if (uint.TryParse(value, out lifetime))
                        {
                            result.Lifetime = lifetime;
                        }
                        break;

                    case "DefaultMinimumPeriod":
                        value = reader.ReadInnerXml();
                        uint defaultMinimumPeriod;
                        if (uint.TryParse(value, out defaultMinimumPeriod))
                        {
                            result.DefaultMinimumPeriod = defaultMinimumPeriod;
                        }
                        break;

                    case "DefaultMaximumPeriod":
                        value = reader.ReadInnerXml();
                        uint defaultMaximumPeriod;
                        if (uint.TryParse(value, out defaultMaximumPeriod))
                        {
                            result.DefaultMaximumPeriod = defaultMaximumPeriod;
                        }
                        break;

                    case "DisableTimeout":
                        value = reader.ReadInnerXml();
                        uint disableTimeout;
                        if (uint.TryParse(value, out disableTimeout))
                        {
                            result.DisableTimeout = disableTimeout;
                        }
                        break;

                    case "NotificationStoringWhenOffline":
                        value = reader.ReadInnerXml();
                        bool notificationStoringWhenOffline;
                        if (bool.TryParse(value, out notificationStoringWhenOffline))
                        {
                            result.NotificationStoringWhenOffline = notificationStoringWhenOffline;
                        }
                        break;

                    case "Binding":
                        value = reader.ReadInnerXml();
                        if (!string.IsNullOrEmpty(value))
                        {
                            value = value.ToUpper();
                            TBindingMode bindingMode = TBindingMode.NotSet;
                            foreach (char binding in value)
                            {
                                if (binding == 'U')
                                {
                                    bindingMode = TBindingMode.UDP;
                                }
                                else if (binding == 'S')
                                {
                                    if (bindingMode == TBindingMode.UDP)
                                    {
                                        bindingMode = TBindingMode.UDPSMS;
                                    }
                                    else if (bindingMode == TBindingMode.QueuedUDP)
                                    {
                                        bindingMode = TBindingMode.QueuedUDPSMS;
                                    }
                                    else
                                    {
                                        bindingMode = TBindingMode.SMS;
                                    }
                                }
                                else if (binding == 'Q')
                                {
                                    if (bindingMode == TBindingMode.UDP)
                                    {
                                        bindingMode = TBindingMode.QueuedUDP;
                                    }
                                    else if (bindingMode == TBindingMode.SMS)
                                    {
                                        bindingMode = TBindingMode.QueuedSMS;
                                    }
                                }
                            }
                            result.Binding = bindingMode;
                        }
                        break;

                    case "EndPointSecurity":
                        Security security = Security.Deserialise(reader.ReadSubtree());
                        result.EndPoints.Add(security);
                        break;

                    default:
                        break;
                    }
                }
            }
            return(result);
        }
Esempio n. 2
0
        public override bool Deserialise(TlvReader reader)
        {
            bool result = false;

            while (reader.Read())
            {
                if (reader.TlvRecord.TypeIdentifier == TTlvTypeIdentifier.ObjectInstance)
                {
                    if (string.Compare(this.Name, reader.TlvRecord.Identifier.ToString()) != 0)
                    {
                        this.Name = reader.TlvRecord.Identifier.ToString();
                    }
                    reader = new TlvReader(reader.TlvRecord.Value);
                }
                else if ((reader.TlvRecord.TypeIdentifier != TTlvTypeIdentifier.ObjectInstance) && (reader.TlvRecord.TypeIdentifier != TTlvTypeIdentifier.NotSet))
                {
                    switch ((ResourceID)reader.TlvRecord.Identifier)
                    {
                    case ResourceID.ShortServerID:
                        this.ShortServerID = reader.TlvRecord.ValueAsInt32();
                        result             = true;
                        break;

                    case ResourceID.Lifetime:
                        this.Lifetime = reader.TlvRecord.ValueAsInt32();
                        result        = true;
                        break;

                    case ResourceID.DefaultMinimumPeriod:
                        this.DefaultMinimumPeriod = reader.TlvRecord.ValueAsInt32();
                        result = true;
                        break;

                    case ResourceID.DefaultMaximumPeriod:
                        this.DefaultMaximumPeriod = reader.TlvRecord.ValueAsInt32();
                        result = true;
                        break;

                    case ResourceID.DisableTimeout:
                        this.DisableTimeout = reader.TlvRecord.ValueAsInt32();
                        result = true;
                        break;

                    case ResourceID.NotificationStoringWhenOffline:
                        this.NotificationStoringWhenOffline = reader.TlvRecord.ValueAsBoolean();
                        result = true;
                        break;

                    case ResourceID.Binding:
                        TBindingMode binding     = TBindingMode.NotSet;
                        string       bindingText = reader.TlvRecord.ValueAsString();
                        switch (bindingText)
                        {
                        case "U":
                            binding = TBindingMode.UDP;
                            break;

                        case "UQ":
                            binding = TBindingMode.QueuedUDP;
                            break;

                        case "S":
                            binding = TBindingMode.SMS;
                            break;

                        case "SQ":
                            binding = TBindingMode.QueuedSMS;
                            break;

                        case "US":
                            binding = TBindingMode.UDPSMS;
                            break;

                        case "UQS":
                            binding = TBindingMode.QueuedUDPSMS;
                            break;

                        default:
                            break;
                        }
                        this.Binding = binding;
                        result       = true;
                        break;

                    default:
                        break;
                    }
                }
            }
            return(result);
        }
Esempio n. 3
0
        public bool Parse(IEnumerable <string> queryParameters)
        {
            bool result           = false;
            bool lifetimeSupplied = false;

            foreach (string item in queryParameters)
            {
                int index = item.IndexOf('=');
                if (index > 0)
                {
                    string name  = item.Substring(0, index);
                    string value = item.Substring(index + 1);
                    if (name == "ep")
                    {
                        Name = value;
                    }
                    else if (name == "lt")
                    {
                        int seconds;
                        if (int.TryParse(value, out seconds))
                        {
                            Lifetime = DateTime.UtcNow.AddSeconds(seconds);
                        }
                        lifetimeSupplied = true;
                    }
                    else if (name == "sms")
                    {
                        SMSNumber = value;
                    }
                    else if (name == "lwm2m")
                    {
                        Version version;
                        if (Version.TryParse(value, out version))
                        {
                            Version = version;
                        }
                    }
                    else if (name == "b")
                    {
                        value = value.ToUpper();
                        TBindingMode bindingMode = TBindingMode.NotSet;
                        foreach (char binding in value)
                        {
                            if (binding == 'U')
                            {
                                bindingMode = TBindingMode.UDP;
                            }
                            else if (binding == 'S')
                            {
                                if (bindingMode == TBindingMode.UDP)
                                {
                                    bindingMode = TBindingMode.UDPSMS;
                                }
                                else if (bindingMode == TBindingMode.QueuedUDP)
                                {
                                    bindingMode = TBindingMode.QueuedUDPSMS;
                                }
                                else
                                {
                                    bindingMode = TBindingMode.SMS;
                                }
                            }
                            else if (binding == 'Q')
                            {
                                if (bindingMode == TBindingMode.UDP)
                                {
                                    bindingMode = TBindingMode.QueuedUDP;
                                }
                                else if (bindingMode == TBindingMode.SMS)
                                {
                                    bindingMode = TBindingMode.QueuedSMS;
                                }
                            }
                        }
                        BindingMode = bindingMode;
                    }
                }
            }
            if (!lifetimeSupplied)
            {
                Lifetime = DateTime.UtcNow.AddSeconds(DEFAULT_LIFETIME);
            }
            return(result);
        }