public async Task <CoapMessage> DeleteAsync(CoapMessage message) { Exception error = null; CoapUri uri = new CoapUri(message.ResourceUri.ToString()); try { await adapter.UnsubscribeAsync(uri.Resource); coapObserved.Remove(uri.Resource); } catch (Exception ex) { Trace.TraceError("{0} - CoAP Delete fault '{1}' ", DateTime.UtcNow.ToString("yyyy-MM-ddTHH-MM-ss.fffff"), ex.Message); error = ex; } if (error == null) { ResponseMessageType rmt = message.MessageType == CoapMessageType.Confirmable ? ResponseMessageType.Acknowledgement : ResponseMessageType.NonConfirmable; return(new CoapResponse(message.MessageId, rmt, ResponseCodeType.Deleted, message.Token)); } else { return(new CoapResponse(message.MessageId, ResponseMessageType.Reset, ResponseCodeType.EmptyMessage)); } }
public async Task <CoapMessage> DeleteAsync(CoapMessage message) { Exception error = null; CoapUri uri = new CoapUri(message.ResourceUri.ToString()); try { await adapter.UnsubscribeAsync(uri.Resource); await logger?.LogDebugAsync($"CoAP delete unsubscribe '{uri.Resource}' for {session.Identity}."); coapObserved.Remove(uri.Resource); await logger?.LogDebugAsync($"CoAP delete removed '{uri.Resource}' for {session.Identity}."); } catch (Exception ex) { await logger?.LogErrorAsync(ex, $"CoAP delete fault during unsubscribe process for {session.Identity}"); error = ex; } if (error == null) { ResponseMessageType rmt = message.MessageType == CoapMessageType.Confirmable ? ResponseMessageType.Acknowledgement : ResponseMessageType.NonConfirmable; await logger?.LogDebugAsync($"CoAP delete returning response for '{uri.Resource}' with {rmt.ToString()} for {session.Identity}."); return(new CoapResponse(message.MessageId, rmt, ResponseCodeType.Deleted, message.Token)); } else { await logger?.LogDebugAsync($"CoAP delete returning response for '{uri.Resource}' with {ResponseCodeType.EmptyMessage.ToString()} for {session.Identity}."); return(new CoapResponse(message.MessageId, ResponseMessageType.Reset, ResponseCodeType.EmptyMessage)); } }
private void Session_OnUnsubscribe(object sender, MqttMessageEventArgs args) { try { UnsubscribeMessage msg = (UnsubscribeMessage)args.Message; foreach (var item in msg.Topics) { MqttUri uri = new MqttUri(item.ToLowerInvariant()); if (adapter.CanSubscribeAsync(uri.Resource, Channel.IsEncrypted).GetAwaiter().GetResult()) { adapter.UnsubscribeAsync(uri.Resource).GetAwaiter(); } } } catch (Exception ex) { logger.LogError(ex, $"MQTT adapter Session_OnUnsubscribe error on channel '{Channel.Id}'."); OnError?.Invoke(this, new ProtocolAdapterErrorEventArgs(Channel.Id, ex)); } }
private void Session_OnUnsubscribe(object sender, MqttMessageEventArgs args) { try { UnsubscribeMessage msg = (UnsubscribeMessage)args.Message; foreach (var item in msg.Topics) { MqttUri uri = new MqttUri(item.ToLowerInvariant()); if (EventValidator.Validate(false, uri.Resource, Channel, graphManager, context).Validated) { adapter.UnsubscribeAsync(uri.Resource).GetAwaiter(); logger?.LogInformationAsync($"MQTT adapter unsubscribed {uri.ToString()}"); } } } catch (Exception ex) { logger?.LogErrorAsync(ex, $"MQTT adapter Session_OnUnsubscribe error on channel '{Channel.Id}'.").GetAwaiter(); OnError?.Invoke(this, new ProtocolAdapterErrorEventArgs(Channel.Id, ex)); } }