#pragma once #include "mon_messagebus.h" #include #include namespace NMonitoring { class TMonServiceMessageBus: public TMonService2 { private: TMutex Mtx; TIntrusivePtr BusNgMonPage; public: TMonServiceMessageBus(ui16 port, const TString& title); private: NBus::TBusWww* RegisterBusNgMonPage() { TGuard g(Mtx); if (!BusNgMonPage) { BusNgMonPage = new NMonitoring::TBusNgMonPage(); Register(BusNgMonPage.Get()); } return BusNgMonPage->BusWww.Get(); } public: void RegisterClientSession(NBus::TBusClientSessionPtr clientSession) { RegisterBusNgMonPage()->RegisterClientSession(clientSession); } void RegisterServerSession(NBus::TBusServerSessionPtr serverSession) { RegisterBusNgMonPage()->RegisterServerSession(serverSession); } void RegisterQueue(NBus::TBusMessageQueuePtr queue) { RegisterBusNgMonPage()->RegisterQueue(queue); } void RegisterModule(NBus::TBusModule* module) { RegisterBusNgMonPage()->RegisterModule(module); } }; }