/// <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)); } } }