From what I can tell, MQTT QOS is all about Client -> Broker delivery agreements, ie, QOS 1 and 2 can ensure that a published message is received by the broker.
Paho does a good job of blocking based on this basis; mqttClient.publish
will block until the QOS defined agreement is completed - between the client publishing and the broker.
However, if I have clientA publish a message intended for clientB, how do I block until clientB has received the message from the broker?
eg:
ClientB->Subscribe("peer-device/ClientB/application/message")
ClientA->Publish("peer-device/ClientB/application/message")