protected override IList <ArraySegment <byte> > GetBuffer() { var request = new ObserveRequest(); request.Key = _key; request.VBucket = _vbucket; request.Cas = _cas; return(request.CreateBuffer()); }
void ObserveResponse(object sender, ResponseEventArgs e) { lock (this) { #if DEBUG Console.WriteLine("NOTIFY Recieved"); #endif Request request = sender as Request; if (request != null) { Console.WriteLine(request.UriPath); ObserveRequest observeRequest = null; for (int index = 0; index < _ObserveRequests.Count; index++) { if (_ObserveRequests[index].Request.UriPath == request.UriPath) { observeRequest = _ObserveRequests[index]; break; } } string[] objectInstanceResource = request.UriPath.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries); if (observeRequest != null) { #if DEBUG if (observeRequest.PropertyDefinition != null) { Console.WriteLine(observeRequest.PropertyDefinition.Name); } #endif if ((e.Response.ContentType == MediaType.TextPlain) || (e.Response.ContentType == TlvConstant.CONTENT_TYPE_PLAIN)) { #if DEBUG string payload = Encoding.UTF8.GetString(e.Response.Payload); Console.WriteLine(payload); #endif } else if (e.Response.ContentType == TlvConstant.CONTENT_TYPE_TLV) { Object lwm2mObject = null; if (e.Response.Payload != null) { TlvReader reader = new TlvReader(e.Response.Payload); lwm2mObject = ObjectUtils.ParseObject(observeRequest.ObjectDefinition, reader); } if ((lwm2mObject != null) && (objectInstanceResource.Length > 1) && (lwm2mObject.InstanceID == null)) { // Instance ID not in TLV, take from request URI lwm2mObject.InstanceID = objectInstanceResource[1]; } if ((lwm2mObject != null) && (lwm2mObject.Properties.Count > 0)) { #if DEBUG foreach (Property item in lwm2mObject.Properties) { if (observeRequest.PropertyDefinition == null || item.PropertyDefinitionID == observeRequest.PropertyDefinition.PropertyDefinitionID) { if (item.Value != null) { Console.WriteLine(item.Value.Value); } else if (item.Values != null) { string[] values = new string[item.Values.Count]; int index = 0; foreach (PropertyValue value in item.Values) { Console.WriteLine(value.Value); values[index++] = value.Value; } } break; } } #endif } if (lwm2mObject != null) { BusinessLogicFactory.Events.ObservationNotify(this, lwm2mObject); } } } } } }