コード例 #1
0
        /// <summary>
        /// Sends the current response.
        /// </summary>
        public void SendResponse()
        {
            if (_currentResponse != null)
            {
                if (!_isObserving)
                {
                    // check if resource is to be observed
                    if (_resource != null && _resource.Observable &&
                        Code == CoAP.Code.GET &&
                        CoAP.Code.GetResponseClass(Response.Code) == CoAP.Code.SuccessCode)
                    {
                        if (HasOption(OptionType.Observe))
                        {
                            // establish new observation relationship
                            ObservingManager.Instance.AddObserver(this, _resource);
                        }
                        else if (ObservingManager.Instance.IsObserved(PeerAddress.ToString(), _resource))
                        {
                            // terminate observation relationship on that resource
                            ObservingManager.Instance.RemoveObserver(PeerAddress.ToString(), _resource);
                        }
                    }

                    if (PeerAddress == null)
                    {
                        // handle locally
                        HandleResponse(_currentResponse);
                    }
                    else
                    {
                        _currentResponse.Send();
                    }
                }
            }
            else
            {
                if (log.IsWarnEnabled)
                {
                    log.Warn(String.Format("Missing response to send: Request {0} for {1}", Key, UriPath));
                }
            }
        }