mon_service_messagebus.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #pragma once
  2. #include "mon_messagebus.h"
  3. #include <library/cpp/monlib/service/monservice.h>
  4. #include <util/system/mutex.h>
  5. namespace NMonitoring {
  6. class TMonServiceMessageBus: public TMonService2 {
  7. private:
  8. TMutex Mtx;
  9. TIntrusivePtr<NMonitoring::TBusNgMonPage> BusNgMonPage;
  10. public:
  11. TMonServiceMessageBus(ui16 port, const TString& title);
  12. private:
  13. NBus::TBusWww* RegisterBusNgMonPage() {
  14. TGuard<TMutex> g(Mtx);
  15. if (!BusNgMonPage) {
  16. BusNgMonPage = new NMonitoring::TBusNgMonPage();
  17. Register(BusNgMonPage.Get());
  18. }
  19. return BusNgMonPage->BusWww.Get();
  20. }
  21. public:
  22. void RegisterClientSession(NBus::TBusClientSessionPtr clientSession) {
  23. RegisterBusNgMonPage()->RegisterClientSession(clientSession);
  24. }
  25. void RegisterServerSession(NBus::TBusServerSessionPtr serverSession) {
  26. RegisterBusNgMonPage()->RegisterServerSession(serverSession);
  27. }
  28. void RegisterQueue(NBus::TBusMessageQueuePtr queue) {
  29. RegisterBusNgMonPage()->RegisterQueue(queue);
  30. }
  31. void RegisterModule(NBus::TBusModule* module) {
  32. RegisterBusNgMonPage()->RegisterModule(module);
  33. }
  34. };
  35. }