I am writing a (modern C++) module to simulate a device that connects to a central registry to send and obtain information. The registry and device each pass data both ways, so act as both subscribers and publishers. The device sends the first request message, and the registry returns a suitable response (or should do).