// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using System; using System.Collections; using System.Collections.Generic; using System.Threading; using MQTTnet.Packets; namespace MQTTnet.Server { public sealed class InterceptingUnsubscriptionEventArgs : EventArgs { public InterceptingUnsubscriptionEventArgs(CancellationToken cancellationToken, string clientId, string userName, IDictionary sessionItems, string topic, List userProperties) { CancellationToken = cancellationToken; ClientId = clientId; UserName = userName; SessionItems = sessionItems; Topic = topic; UserProperties = userProperties; } /// /// Gets the cancellation token which can indicate that the client connection gets down. /// public CancellationToken CancellationToken { get; } /// /// Gets the client identifier. /// Hint: This identifier needs to be unique over all used clients / devices on the broker to avoid connection issues. /// public string ClientId { get; } /// /// Gets the user name of the client. /// public string UserName { get; } /// /// Gets or sets whether the broker should close the client connection. /// public bool CloseConnection { get; set; } /// /// Gets or sets whether the broker should remove an internal subscription for the client. /// The broker can also avoid this and return "success" to the client. /// This feature allows using the MQTT Broker as the Frontend and another system as the backend. /// public bool ProcessUnsubscription { get; set; } = true; /// /// Gets the response which will be sent to the client via the UNSUBACK pocket. /// public UnsubscribeResponse Response { get; } = new UnsubscribeResponse(); /// /// Gets or sets a key/value collection that can be used to share data within the scope of this session. /// public IDictionary SessionItems { get; } /// /// Gets or sets the MQTT topic. /// In MQTT, the word topic refers to an UTF-8 string that the broker uses to filter messages for each connected /// client. /// The topic consists of one or more topic levels. Each topic level is separated by a forward slash (topic level /// separator). /// public string Topic { get; } /// /// Gets or sets the user properties. /// MQTT 5.0.0+ feature. /// public List UserProperties { get; set; } } }