Пример #1
0
        private void Deliver(Action <Response> act, ResponseEventArgs e)
        {
            if (act != null)
            {
                act(e.Response);
            }
            EventHandler <ResponseEventArgs> h = Respond;

            if (h != null)
            {
                h(this, e);
            }
        }
Пример #2
0
 //on receive nomal coap response
 void request_Responded(Object sender, ResponseEventArgs e)
 {
     DisplayMessage(e.Response);         
 }
Пример #3
0
 //on receive observe response
 void observe_Responded(Object sender, ResponseEventArgs e)
 {
     if (coapWebSocektService.SessionList.Contains(observedSession))
        coapWebSocektService.SendToObserved(e.Response.PayloadString, observedSession);
     //when the client is closed,cancel the observe
     else
       {
         PerformCoAP(Request.Method.GET, _observingRequest.URI, false, false);
         Console.WriteLine("Websocket链接关闭");
         this.clientSocket.Disconnect(false);
         this.clientSocket.Dispose();
         }
 }
Пример #4
0
 void UpdateMetrics(object sender, ResponseEventArgs e)
 {
     lock (this)
     {
         Request request = sender as Request;
         if (request != null)
         {
             Metrics.BytesSent.Value += request.Bytes.Length;
             Metrics.BytesReceived.Value += e.Response.PayloadSize;
             ++Metrics.TransactionCount.Value;
             BusinessLogicFactory.Events.MetricsUpdate(this);
             // TODO: How often should metrics be updated?
             // TODO: Handle retransmit, rejected etc
         }
     }
 }
Пример #5
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);
                        }
                    }
                }
            }
        }
Пример #6
0
 private void Deliver(Action<Response> act, ResponseEventArgs e)
 {
     if (act != null)
         act(e.Response);
     EventHandler<ResponseEventArgs> h = Respond;
     if (h != null)
         h(this, e);
 }