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); }
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); }
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); }