summaryrefslogtreecommitdiff
path: root/workflow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'workflow.cpp')
-rw-r--r--workflow.cpp102
1 files changed, 54 insertions, 48 deletions
diff --git a/workflow.cpp b/workflow.cpp
index 8146e923..d4b94eb4 100644
--- a/workflow.cpp
+++ b/workflow.cpp
@@ -164,87 +164,93 @@ bool WorkflowMachine::PostJsonRequest(const std::string& request)
}
-bool WorkflowMachine::Run()
+void WorkflowMachine::ShowTopology()
{
- return PostRequest("run");
+ if (m_function)
+ BNShowWorkflowReportForFunction(m_function->GetObject(), "topology");
+ else
+ BNShowWorkflowReportForBinaryView(m_view->GetObject(), "topology");
}
-bool WorkflowMachine::Halt()
+WorkflowMachine::Status WorkflowMachine::GetStatus()
{
- return PostRequest("halt");
+ WorkflowMachine::Status status;
+ 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("machineState") && response["machineState"].HasMember("state") && response["machineState"].HasMember("activity"))
+ {
+ status.state = response["machineState"]["state"].GetString();
+ status.activity = response["machineState"]["activity"].GetString();
+ }
+ if (response.HasMember("logStatus") && response["logStatus"].HasMember("local") && response["logStatus"].HasMember("global"))
+ {
+ status.localLogEnabled = response["logStatus"]["local"].GetBool();
+ status.globalLogEnabled = response["logStatus"]["global"].GetBool();
+ }
+
+ return status;
}
-bool WorkflowMachine::Reset()
+bool WorkflowMachine::Resume()
{
- return PostRequest("reset");
+ return PostRequest("resume");
}
-bool WorkflowMachine::Enable()
+bool WorkflowMachine::Run()
{
- return PostRequest("enable");
+ return PostRequest("run");
}
-bool WorkflowMachine::Disable()
+bool WorkflowMachine::Configure()
{
- return PostRequest("disable");
+ return PostRequest("configure");
}
-bool WorkflowMachine::Step()
+bool WorkflowMachine::Halt()
{
- return PostRequest("step");
+ return PostRequest("halt");
}
-string WorkflowMachine::GetState()
+bool WorkflowMachine::Reset()
{
- 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());
+ return PostRequest("reset");
+}
- rapidjson::Document response(rapidjson::kObjectType);
- response.Parse(jsonResult.c_str());
- if (response.HasMember("machineState") && response["machineState"].HasMember("state"))
- return response["machineState"]["state"].GetString();
- return "Invalid";
+bool WorkflowMachine::Enable()
+{
+ return PostRequest("enable");
}
-std::pair<bool, bool> WorkflowMachine::GetLogStatus()
+bool WorkflowMachine::Disable()
{
- 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());
+ return PostRequest("disable");
+}
- 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::Step()
+{
+ return PostRequest("step");
}