#include #include #include #include #include #include #include "src/device/EventBus.h" class ProdA {}; class ProdB {}; class ConsA { public: void surProdA(const ProdA &) { std::cout << "ConsA : Reçu ProdA" << std::endl; } }; class ConsB { public: void surProdA(const ProdA &) { std::cout << "ConsB : Reçu ProdA" << std::endl; } void surProdB(const ProdB &) { std::cout << "ConsB : Reçu ProdB" << std::endl; } }; class ConsC { public: void surProdB(const ProdB &) { std::cout << "ConsC : Reçu ProdB" << std::endl; } }; int main() { EventBus bus; // Consumer ConsA consA; ConsB consB; ConsC consC; // Setup abonnement // ConsA react to ProdA bus.subscribe([&consA](const ProdA &e) { consA.surProdA(e); }); // ConsB react to ProdA and ProdB bus.subscribe([&consB](const ProdA &e) { consB.surProdA(e); }); bus.subscribe([&consB](const ProdB &e) { consB.surProdB(e); }); // ConsC react to ProdB bus.subscribe([&consC](const ProdB &e) { consC.surProdB(e); }); // Test of publishement std::cout << "--- Publishing of ProdA ---" << std::endl; ProdA prodA; bus.publish(prodA); std::cout << "\n--- Publishing of ProdB ---" << std::endl; ProdB prodB; bus.publish(prodB); return 0; }