diff options
| author | Brian Potchik <brian@vector35.com> | 2025-03-29 21:55:04 -0400 |
|---|---|---|
| committer | Brian Potchik <brian@vector35.com> | 2025-03-29 21:55:04 -0400 |
| commit | 44c8af1986d2626e44931917c548adece5bc074d (patch) | |
| tree | 44029bae21d9226ea8b101a079253148faf4056c /workflow.cpp | |
| parent | 84dc3cb21aa75f40dae5ab8fdd2f1782e77f5f4c (diff) | |
Add interim workflow C++ apis for logging.
Diffstat (limited to 'workflow.cpp')
| -rw-r--r-- | workflow.cpp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/workflow.cpp b/workflow.cpp index 9edb6ea6..8e3dc7df 100644 --- a/workflow.cpp +++ b/workflow.cpp @@ -207,6 +207,56 @@ string WorkflowMachine::GetState() } +std::pair<bool, bool> WorkflowMachine::GetLogStatus() +{ + rapidjson::Document request(rapidjson::kObjectType); + rapidjson::Document::AllocatorType& allocator = request.GetAllocator(); + request.AddMember("command", "status", allocator); + rapidjson::StringBuffer buffer; + rapidjson::Writer<rapidjson::StringBuffer> writer(buffer); + request.Accept(writer); + + string jsonResult; + if (m_function) + jsonResult = BNPostWorkflowRequestForFunction(m_function->GetObject(), buffer.GetString()); + else + jsonResult = BNPostWorkflowRequestForBinaryView(m_view->GetObject(), buffer.GetString()); + + rapidjson::Document response(rapidjson::kObjectType); + response.Parse(jsonResult.c_str()); + if (response.HasMember("logStatus") && response["logStatus"].HasMember("local") && response["logStatus"].HasMember("global")) + return {response["logStatus"]["local"].GetBool(), response["logStatus"]["global"].GetBool()}; + + return {false, false}; +} + + +bool WorkflowMachine::SetLogEnabled(bool enable, bool global) +{ + rapidjson::Document request(rapidjson::kObjectType); + rapidjson::Document::AllocatorType& allocator = request.GetAllocator(); + request.AddMember("command", "log", allocator); + request.AddMember("enable", enable, allocator); + request.AddMember("global", global, allocator); + rapidjson::StringBuffer buffer; + rapidjson::Writer<rapidjson::StringBuffer> writer(buffer); + request.Accept(writer); + + string jsonResult; + if (m_function) + jsonResult = BNPostWorkflowRequestForFunction(m_function->GetObject(), buffer.GetString()); + else + jsonResult = BNPostWorkflowRequestForBinaryView(m_view->GetObject(), buffer.GetString()); + + rapidjson::Document response(rapidjson::kObjectType); + response.Parse(jsonResult.c_str()); + if (response.HasMember("commandStatus") && response["commandStatus"].HasMember("accepted")) + return response["commandStatus"]["accepted"].GetBool(); + + return false; +} + + std::optional<bool> WorkflowMachine::QueryOverride(const string& activity) { rapidjson::Document request(rapidjson::kObjectType); |
