fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct GenericCb {
  5. void create_resource() {
  6. cout << "Create Resource" << endl;
  7. }
  8. };
  9.  
  10. struct LagCb : public GenericCb {
  11. void add_member() {
  12. cout << "Add Member" << endl;
  13. }
  14. };
  15.  
  16. class Orch {
  17. public:
  18. void registerCb(GenericCb *cb) {
  19. this->cb = cb;
  20. }
  21.  
  22. void notify_create_resource() {
  23. cb->create_resource();
  24. }
  25.  
  26. GenericCb *cb;
  27. };
  28.  
  29. class LagOrch : public Orch {
  30. public:
  31. void notify_add_member() {
  32. static_cast<LagCb*>(cb)->add_member();
  33. }
  34. };
  35.  
  36. int main() {
  37. // Exemplo do orchestrator generico
  38. GenericCb cb;
  39. Orch orch;
  40. orch.registerCb(&cb);
  41. orch.notify_create_resource();
  42.  
  43. // Exemplo do LAG orchestrator
  44. LagCb lagCb;
  45. LagOrch lagOrch;
  46. lagOrch.registerCb(&lagCb);
  47. lagOrch.notify_create_resource();
  48. lagOrch.notify_add_member();
  49.  
  50. return 0;
  51. }
Success #stdin #stdout 0s 5304KB
stdin
Standard input is empty
stdout
Create Resource
Create Resource
Add Member