);
}
- return result.state;
+ return result.result;
}
},
_id: {
// Pipeline API begin
REGISTER_METHOD(MLPipelineManagerCreatePipeline);
+ REGISTER_METHOD(MLPipelineGetState);
// Pipeline API end
// PipelineManager::createPipeline() end
// Pipeline::state begin
+void MlInstance::MLPipelineGetState(const picojson::value& args, picojson::object& out) {
+ ScopeLogger("args: %s", args.serialize().c_str());
+
+ if (!args.get(kId).is<double>()) {
+ LoggerD("id is not a number");
+ ReportError(PlatformResult{ErrorCode::ABORT_ERR, "Invalid pipeline"}, &out);
+ return;
+ }
+ auto id = static_cast<int>(args.get(kId).get<double>());
+ picojson::value state_value{std::string{}};
+ std::string* state_ptr = &state_value.get<std::string>();
+ auto ret = pipeline_manager_.GetPipelineState(id, state_ptr);
+ if (!ret) {
+ ReportError(ret, &out);
+ return;
+ }
+
+ ReportSuccess(state_value, out);
+}
// Pipeline::state end
// Pipeline::start() begin
// PipelineManager::createPipeline() end
// Pipeline::state begin
-
+ void MLPipelineGetState(const picojson::value& args, picojson::object& out);
// Pipeline::state end
// Pipeline::start() begin
}
// Pipeline::state begin
+PlatformResult Pipeline::GetState(std::string* out) {
+ ScopeLogger("id_: [%d]", id_);
+ ml_pipeline_state_e state = ML_PIPELINE_STATE_UNKNOWN;
+ auto ret = ml_pipeline_get_state(pipeline_, &state);
+ if (ML_ERROR_NONE != ret) {
+ LoggerE("ml_pipeline_get_state() failed: [%d] (%s)", ret, get_error_message(ret));
+ return util::ToPlatformResult(ret, "Could not get pipeline state");
+ }
+ LoggerD("ml_pipeline_get_state() succeeded");
+
+ *out = StateToString(state);
+ return PlatformResult{};
+}
// Pipeline::state end
// Pipeline::start() begin
~Pipeline();
// Pipeline::state begin
-
+ PlatformResult GetState(std::string* out);
// Pipeline::state end
// Pipeline::start() begin
// PipelineManager::createPipeline() end
// Pipeline::state begin
+PlatformResult PipelineManager::GetPipelineState(int id, std::string* out) {
+ ScopeLogger("id: [%d]", id);
+
+ auto pipeline_it = pipelines_.find(id);
+ if (pipelines_.end() == pipeline_it) {
+ LoggerD("Pipeline not found: [%d]", id);
+ *out = "NULL";
+ return PlatformResult{};
+ }
+ auto ret = pipeline_it->second->GetState(out);
+ return ret;
+}
// Pipeline::state end
// Pipeline::start() begin
// PipelineManager::createPipeline() end
// Pipeline::state begin
-
+ PlatformResult GetPipelineState(int id, std::string* out);
// Pipeline::state end
// Pipeline::start() begin