复现已有算法

This commit is contained in:
cloud
2026-07-14 15:43:18 +08:00
parent abebd2a683
commit 50b8111fd9
860 changed files with 182250 additions and 18 deletions
+51
View File
@@ -0,0 +1,51 @@
/**
*
* 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