public static ObjectType Deserialise(Stream stream) { ObjectType result = new ObjectType(); result.Path = IPCHelper.ReadString(stream); result.ObjectTypeID = IPCHelper.ReadInt32(stream); int count = IPCHelper.ReadInt32(stream); if (count > 0) { for (int index = 0; index < count; index++) { int item = IPCHelper.ReadInt32(stream); result.Instances.Add(item); } } return result; }
public void CancelObserve(ObjectType objectType, string instanceID, string resourceID, bool useReset) { if (_ObserveRequests != null) { string uriPath; if (string.IsNullOrEmpty(instanceID)) uriPath = objectType.Path; else if (string.IsNullOrEmpty(resourceID)) uriPath = string.Concat(objectType.Path, "/", instanceID); else uriPath = string.Concat(objectType.Path, "/", instanceID, "/", resourceID); int index = 0; while (index < _ObserveRequests.Count) { if (_ObserveRequests[index].Request.UriPath == uriPath) { Request observeRequest = _ObserveRequests[index].Request; _ObserveRequests.RemoveAt(index); if (observeRequest != null) { if (useReset) { observeRequest.IsCancelled = true; } else { Request request = new Request(Method.GET); request.Accept = _DataFormat; request.Destination = observeRequest.Destination; request.EndPoint = observeRequest.EndPoint; request.UriPath = observeRequest.UriPath; request.MarkObserveCancel(); SendRequest(request); observeRequest.IsCancelled = true; } } } else index++; } } }
private void SetupRequest(Request request, ObjectType objectType, string instanceID, string resourceID) { request.Destination = this.Address; request.EndPoint = this.EndPoint; if (string.IsNullOrEmpty(instanceID)) request.UriPath = objectType.Path; else if (string.IsNullOrEmpty(resourceID)) request.UriPath = string.Concat(objectType.Path, "/", instanceID); else request.UriPath = string.Concat(objectType.Path, "/", instanceID, "/", resourceID); }
public void Observe( ObjectDefinition objectDefinition, ObjectType objectType, string instanceID, PropertyDefinition propertyDefinition) { Request request; if (propertyDefinition == null) request = NewGetRequest(objectType, instanceID, null); else request = NewGetRequest(objectType, instanceID, propertyDefinition.PropertyID); request.MarkObserve(); if (_ObserveRequests == null) _ObserveRequests = new List<ObserveRequest>(); bool found = false; for (int index = 0; index < _ObserveRequests.Count; index++) { if (_ObserveRequests[index].Request.UriPath == request.UriPath) { found = true; break; } } if (!found) { _ObserveRequests.Add(new ObserveRequest() { Request = request, ObjectDefinition = objectDefinition, PropertyDefinition = propertyDefinition }); request.Respond += new EventHandler<ResponseEventArgs>(ObserveResponse); SendRequest(request); } }
public Request NewPutRequest(ObjectType objectType, string instanceID, string resourceID, int contentType, byte[] data) { Request result = new Request(Method.PUT); //if (contentType == MediaType.TextPlain) // contentType = TlvConstant.CONTENT_TYPE_PLAIN; SetupRequest(result, objectType, instanceID, resourceID); result.Payload = data; if (contentType != -1) result.ContentType = contentType; return result; }
public Request NewPostRequest(ObjectType objectType, string instanceID, string resourceID, int contentType, byte[] data) { Request result = new Request(Method.POST); SetupRequest(result, objectType, instanceID, resourceID); result.Payload = data; if (contentType != -1) result.ContentType = contentType; return result; }
public Request NewPostRequest(ObjectType objectType, string instanceID, int contentType, byte[] data) { return NewPostRequest(objectType, instanceID, null, contentType, data); }
public Request NewGetRequest(ObjectType objectType, string instanceID, string resourceID) { Request result = new Request(Method.GET); //result.Accept = TlvConstant.CONTENT_TYPE_TLV; result.Accept = _DataFormat; //if (_DataFormat == MediaType.TextPlain) // result.Accept = TlvConstant.CONTENT_TYPE_PLAIN; SetupRequest(result, objectType, instanceID, resourceID); return result; }
public Request NewGetRequest(ObjectType objectType, string instanceID) { Request result = new Request(Method.GET); //result.Accept = TlvConstant.CONTENT_TYPE_TLV; result.Accept = _DataFormat; SetupRequest(result, objectType, instanceID, null); return result; }
public Request NewDeleteRequest(ObjectType objectType, string instanceID, string resourceID) { Request result = new Request(Method.DELETE); SetupRequest(result, objectType, instanceID, resourceID); return result; }
public Request NewDeleteRequest(ObjectType objectType, string instanceID) { return NewDeleteRequest(objectType, instanceID, null); }
private Client LoadClientFromDoc(BsonDocument doc) { Client result = null; if (doc != null) { result = new Client(); result.ClientID = BsonHelper.GetGuid(doc, "_id"); result.Name = BsonHelper.GetString(doc, "Name"); result.OrganisationID = BsonHelper.GetInt32(doc, "OrganisationID"); result.Lifetime = BsonHelper.GetDateTime(doc, "Lifetime"); string versionText = BsonHelper.GetString(doc, "Version"); Version version; if (Version.TryParse(versionText, out version)) result.Version = version; result.BindingMode = (TBindingMode)BsonHelper.GetInt32(doc, "BindingMode"); result.SMSNumber = BsonHelper.GetString(doc, "SMSNumber"); result.Server = BsonHelper.GetString(doc, "Server"); result.LastActivityTime = BsonHelper.GetDateTime(doc, "LastActivityTime"); result.LastUpdateActivityTime = result.LastActivityTime; if (doc.Contains("SupportedTypes")) { BsonArray array = doc["SupportedTypes"].AsBsonArray; foreach (BsonValue arrayItem in array) { BsonDocument supportedTypeDoc = arrayItem.AsBsonDocument; if (supportedTypeDoc != null) { ObjectType supportedType = new ObjectType(); supportedType.ObjectTypeID = BsonHelper.GetInt32(supportedTypeDoc, "_id"); supportedType.Path = BsonHelper.GetString(supportedTypeDoc, "Path"); if (supportedTypeDoc.Contains("Instances")) { BsonArray instances = supportedTypeDoc["Instances"].AsBsonArray; foreach (BsonValue instance in instances) { supportedType.Instances.Add(instance.AsInt32); } } if (result.SupportedTypes == null) result.SupportedTypes = new ObjectTypes(); result.SupportedTypes.AddObjectType(supportedType); } } } } return result; }
internal static int Compare(ObjectType x, ObjectType y) { int result = x.ObjectTypeID.CompareTo(y.ObjectTypeID); if (result == 0) { result = x.Instances.Count.CompareTo(y.Instances.Count); if (result == 0) { foreach (int xItem in x.Instances) { bool found = false; foreach (int yItem in y.Instances) { if (xItem == yItem) { found = true; break; } } if (!found) { result = 1; break; } } } } return result; }