复现已有算法
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user