Show me an example of how to create an application that serves as an abstract layer for other services to be able to connect to that is written in C++. The abstract layer should provide the services interfaces and a means to be able to publish messages as well as subscribe to messages. If a service wants to subscribe to a message, a class would have to inherit that specific message's listener, and then that listener would be registered to a reader that contains the message topic. The messages that the abstract layer support are defined in an API, which would consist of header files (. h files) that would have to be included in the services environment. The API is generated from an XSD schema file that cannot be modified. The backend of the abstract layer should be transport agnostic. Potential transports that will be used are ActiveMQ, RabbitMQ, OpenDDS, RTIDDS, to name a few. These transports would be supported as plugins so as to easily swap them out. Also, encrypting the messages in some kind of way would be needed.