From 9353b8793f8725568c04ba03adf8b7f84d0cd226 Mon Sep 17 00:00:00 2001 From: Mingchuan Wu Date: Sat, 2 Sep 2023 15:57:33 +0800 Subject: [PATCH 2/2] [PluginServer] Add class for Server Command. --- include/PluginAPI/BasicPluginOpsAPI.h | 1 + include/PluginAPI/PluginServerAPI.h | 1 + include/PluginServer/PluginOptBase.h | 2 +- include/PluginServer/PluginServer.h | 44 +++++++++++++++++++++++++++ lib/PluginAPI/PluginServerAPI.cpp | 5 +++ lib/PluginServer/main.cpp | 5 +-- 6 files changed, 55 insertions(+), 3 deletions(-) diff --git a/include/PluginAPI/BasicPluginOpsAPI.h b/include/PluginAPI/BasicPluginOpsAPI.h index 065274d..b047175 100644 --- a/include/PluginAPI/BasicPluginOpsAPI.h +++ b/include/PluginAPI/BasicPluginOpsAPI.h @@ -44,6 +44,7 @@ public: virtual string GetIncludeFile() = 0; virtual int GetDeclSourceLine(int64_t) = 0; virtual int GetDeclSourceColumn(int64_t) = 0; + virtual void ShutdownCompile() = 0; // CGnodeOp virtual vector GetAllCGnode() = 0; diff --git a/include/PluginAPI/PluginServerAPI.h b/include/PluginAPI/PluginServerAPI.h index 9cc8498..54e18a3 100644 --- a/include/PluginAPI/PluginServerAPI.h +++ b/include/PluginAPI/PluginServerAPI.h @@ -124,6 +124,7 @@ public: string GetIncludeFile() override; int GetDeclSourceLine(int64_t) override; int GetDeclSourceColumn(int64_t) override; + void ShutdownCompile() override; private: mlir::Block* BlockResult(const string& funName, const string& params); vector BlocksResult(const string& funName, const string& params); diff --git a/include/PluginServer/PluginOptBase.h b/include/PluginServer/PluginOptBase.h index 474d072..926ab7a 100755 --- a/include/PluginServer/PluginOptBase.h +++ b/include/PluginServer/PluginOptBase.h @@ -74,9 +74,9 @@ public: } private: - mlir::MLIRContext context; InjectPoint inject; uint64_t func; // 保存managerSetup fun参数指针 + mlir::MLIRContext context; }; } // namespace PluginOpt #endif diff --git a/include/PluginServer/PluginServer.h b/include/PluginServer/PluginServer.h index 81f92e9..3b4b8e6 100644 --- a/include/PluginServer/PluginServer.h +++ b/include/PluginServer/PluginServer.h @@ -98,8 +98,51 @@ private: std::shared_ptr opt; }; +class ServerCommand { +public: + ServerCommand() = default; + ~ServerCommand() = default; + ServerCommand(const string& input, const string& dir, const string& common, + const string& extra, const string& output) { + this->input = input; + this->dir = dir; + this->common = common; + this->extra = extra; + this->output = output; + } + + void SetInput(const string& input) { this->input = input; } + void SetDir(const string& dir) { this->dir = dir; } + void SetCommon(const string& common) { this->common = common; } + void SetExtra(const string& extra) { this->extra = extra; } + void SetOutput(const string& output) { this->output = output; } + + string GetInput() { return this->input; } + string GetDir() { return this->dir; } + string GetCommon() { return this->common; } + string GetExtra() { return this->extra; } + string GetOutput() { return this->output; } +private: + string input; + string dir; + string common; + string extra; + string output; +}; + class PluginServer { public: + void SetServerCommand( + const string& input, const string& dir, const string& common, + const string& extra, const string& output) { + this->serverCMD.SetInput(input); + this->serverCMD.SetDir(dir); + this->serverCMD.SetCommon(common); + this->serverCMD.SetExtra(extra); + this->serverCMD.SetOutput(output); + } + ServerCommand GetServerCommand() { return this->serverCMD; } + PluginServer(LogPriority priority, const string& port) { userFunState = STATE_WAIT_BEGIN; @@ -276,6 +319,7 @@ public: void RemoteCallClientWithAPI(const string& api, const string& params); private: + ServerCommand serverCMD; /* 用户函数执行状态,client返回结果后为STATE_RETURN,开始执行下一个函数 */ volatile UserFunStateEnum userFunState; mlir::MLIRContext *context; diff --git a/lib/PluginAPI/PluginServerAPI.cpp b/lib/PluginAPI/PluginServerAPI.cpp index 09bd358..00a2a35 100644 --- a/lib/PluginAPI/PluginServerAPI.cpp +++ b/lib/PluginAPI/PluginServerAPI.cpp @@ -472,6 +472,11 @@ llvm::SmallVector PluginServerAPI::GetFields(uint64_t return PluginServer::GetInstance()->GetFieldsResult(funName, params); } +void PluginServerAPI::ShutdownCompile() { + string funName = __func__; + PluginServer::GetInstance()->RemoteCallClientWithAPI(funName, ""); +} + void PluginServerAPI::SetDeclName(uint64_t newfieldId, uint64_t fieldId) { Json::Value root; diff --git a/lib/PluginServer/main.cpp b/lib/PluginServer/main.cpp index 333d55e..669d5e4 100644 --- a/lib/PluginServer/main.cpp +++ b/lib/PluginServer/main.cpp @@ -24,7 +24,7 @@ using namespace PinServer; int main(int argc, char** argv) { - const int argcNum = 2; // 参数只有2个,argv[0]:port argv[1]:log级别 + const int argcNum = 7; if (argc != argcNum) { printf("param num:%d, should be:%d\n", argc, argcNum); return -1; @@ -32,6 +32,7 @@ int main(int argc, char** argv) std::string port = argv[0]; LogPriority priority = (LogPriority)atoi(argv[1]); PluginServer server(priority, port); + server.SetServerCommand(argv[2], argv[3], argv[4], argv[5], argv[6]); server.RunServer(); return 0; -} \ No newline at end of file +} -- 2.33.0