Пример #1
0
        protected override IList <ArraySegment <byte> > GetBuffer()
        {
            var request = new ObserveRequest();

            request.Key     = _key;
            request.VBucket = _vbucket;
            request.Cas     = _cas;

            return(request.CreateBuffer());
        }
Пример #2
0
        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);
                            }
                        }
                    }
                }
            }
        }