Files
wind_power_cal/third_party/drogon_repo/lib/src/SharedLibManager.h
T
2026-07-14 15:43:18 +08:00

52 lines
1.2 KiB
C++

/**
*
* SharedLibManager.h
* An Tao
*
* Copyright 2018, An Tao. All rights reserved.
* https://github.com/an-tao/drogon
* Use of this source code is governed by a MIT license
* that can be found in the License file.
*
* Drogon
*
*/
#pragma once
#include <trantor/net/EventLoopThread.h>
#include <trantor/utils/NonCopyable.h>
#include <unordered_map>
#include <vector>
#include <sys/stat.h>
namespace drogon
{
class SharedLibManager : public trantor::NonCopyable
{
public:
SharedLibManager(const std::vector<std::string> &libPaths,
const std::string &outputPath);
~SharedLibManager();
private:
void managerLibs();
std::vector<std::string> libPaths_;
std::string outputPath_;
struct DLStat
{
void *handle{nullptr};
struct timespec mTime = {0, 0};
};
std::unordered_map<std::string, DLStat> dlMap_;
void *compileAndLoadLib(const std::string &sourceFile, void *oldHld);
void *loadLib(const std::string &soFile, void *oldHld);
bool shouldCompileLib(const std::string &soFile,
const struct stat &sourceStat);
trantor::TimerId timeId_;
trantor::EventLoopThread workingThread_;
};
} // namespace drogon