Description

Helper class to help safely use MQTTClient’s BeginPacketBuffer-EndPacketBuffer pairs in a using. With BeginPacketBuffer and EndPacketBuffer Best MQTT can send less network packets to the broker.

Examples

using (new PacketBufferHelper(client))
{
    client.CreateUnsubscribePacketBuilder("/#")
        .BeginUnsubscribe();
            
    client.CreateBulkSubscriptionBuilder()
        .WithTopic(new SubscribeTopicBuilder("$SYS/#")
            .WithMaximumQoS(QoSLevels.ExactlyOnceDelivery)
            .WithMessageCallback(OnSysMessages)
            .WithAcknowledgementCallback(OnSysMessagesSubscribeAck))
        .WithTopic(new SubscribeTopicBuilder("/test/msgs")
            .WithMaximumQoS(QoSLevels.ExactlyOnceDelivery)
            .WithMessageCallback(OnTestMessages)
            .WithAcknowledgementCallback(OnTestMessagesSubscribeAck))
        .BeginSubscribe();
}

The same behavior using BeginPacketBuffer-EndPacketBuffer would be the following:

client.BeginPacketBuffer();
try
{
    client.CreateUnsubscribePacketBuilder("/#")
        .BeginUnsubscribe();
            
    client.CreateBulkSubscriptionBuilder()
        .WithTopic(new SubscribeTopicBuilder("$SYS/#")
            .WithMaximumQoS(QoSLevels.ExactlyOnceDelivery)
            .WithMessageCallback(OnSysMessages)
            .WithAcknowledgementCallback(OnSysMessagesSubscribeAck))
        .WithTopic(new SubscribeTopicBuilder("/test/msgs")
            .WithMaximumQoS(QoSLevels.ExactlyOnceDelivery)
            .WithMessageCallback(OnTestMessages)
            .WithAcknowledgementCallback(OnTestMessagesSubscribeAck))
        .BeginSubscribe();
}
finally
{
    client.EndPacketBuffer();
}