using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using MQTTnet.Client; using MQTTnet.Packets; namespace MQTTnet.Extensions.ManagedClient { public interface IManagedMqttClient : IDisposable { event Func ApplicationMessageProcessedAsync; event Func ApplicationMessageReceivedAsync; event Func ApplicationMessageSkippedAsync; event Func ConnectedAsync; event Func ConnectingFailedAsync; event Func ConnectionStateChangedAsync; event Func DisconnectedAsync; event Func SynchronizingSubscriptionsFailedAsync; event Func SubscriptionsChangedAsync; IMqttClient InternalClient { get; } bool IsConnected { get; } bool IsStarted { get; } ManagedMqttClientOptions Options { get; } int PendingApplicationMessagesCount { get; } Task EnqueueAsync(MqttApplicationMessage applicationMessage); Task EnqueueAsync(ManagedMqttApplicationMessage applicationMessage); Task PingAsync(CancellationToken cancellationToken = default); Task StartAsync(ManagedMqttClientOptions options); Task StopAsync(bool cleanDisconnect = true); Task SubscribeAsync(IEnumerable topicFilters); Task UnsubscribeAsync(IEnumerable topics); } }