66 lines
1.4 KiB
C++
66 lines
1.4 KiB
C++
#include <functional>
|
|
#include <iostream>
|
|
#include <memory>
|
|
#include <typeindex>
|
|
#include <unordered_map>
|
|
#include <vector>
|
|
|
|
#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<ProdA>([&consA](const ProdA &e) { consA.surProdA(e); });
|
|
|
|
// ConsB react to ProdA and ProdB
|
|
bus.subscribe<ProdA>([&consB](const ProdA &e) { consB.surProdA(e); });
|
|
bus.subscribe<ProdB>([&consB](const ProdB &e) { consB.surProdB(e); });
|
|
|
|
// ConsC react to ProdB
|
|
bus.subscribe<ProdB>([&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;
|
|
} |