IMqttClientService.cs 1.14 KB
using MQTTnet.Protocol;

namespace Rcs.Application.Shared
{
    public interface IMqttClientService
    {
        Task PublishAsync(string topic, string payload, MqttQualityOfServiceLevel qos = MqttQualityOfServiceLevel.AtMostOnce, bool retain = false, CancellationToken ct = default);
        Task PublishInstantActionsAsync(string protocolName, string protocolVersion,string RobotManufacturer, string RobotSerialNumber, string payload, MqttQualityOfServiceLevel qos = MqttQualityOfServiceLevel.AtMostOnce, bool retain = false, CancellationToken ct = default);
        Task PublishOrderAsync(string protocolName, string protocolVersion, string RobotManufacturer, string RobotSerialNumber, string payload, MqttQualityOfServiceLevel qos = MqttQualityOfServiceLevel.AtMostOnce, bool retain = false, CancellationToken ct = default);
        Task AddOrUpdateSubscriptionsAsync(IEnumerable<(string topic, MqttQualityOfServiceLevel qos)> subscriptions, CancellationToken ct = default);
        Task RemoveSubscriptionAsync(string topic, CancellationToken ct = default);
        IReadOnlyCollection<(string topic, MqttQualityOfServiceLevel qos)> GetSubscriptions();
    }
}