#pragma once
#include <memory>
#define USE_GOOGLE_LOG
#include "dynolog/src/ipcfabric/FabricManager.h"
#include "dynolog/src/Logger.h"
namespace dynolog {
namespace tracing {
class IPCMonitor {
public:
using FabricManager = dynolog::ipcfabric::FabricManager;
IPCMonitor(const std::string& ipc_fabric_name = "dynolog");
virtual ~IPCMonitor() {}
void loop();
void dataLoop();
public:
virtual void processMsg(std::unique_ptr<ipcfabric::Message> msg);
virtual void processDataMsg(std::unique_ptr<ipcfabric::Message> msg);
void getLibkinetoOnDemandRequest(std::unique_ptr<ipcfabric::Message> msg);
void registerLibkinetoContext(std::unique_ptr<ipcfabric::Message> msg);
void updateLibkinetoStatus(std::unique_ptr<ipcfabric::Message> msg, const std::string& msgType);
void setLogger(std::unique_ptr<Logger> logger);
void LogData(const nlohmann::json& result);
std::unique_ptr<ipcfabric::FabricManager> ipc_manager_;
std::unique_ptr<ipcfabric::FabricManager> data_ipc_manager_;
std::unique_ptr<Logger> logger_;
friend class IPCMonitorTest_LibkinetoRegisterAndOndemandTest_Test;
};
}
}