//Pipeline::state end
//Pipeline::start() begin
+var ValidPipelineStartStopExceptions = ['NotFoundError', 'NotSupportedError', 'AbortError'];
+Pipeline.prototype.start = function() {
+ var nativeArgs = {
+ id: this._id
+ };
+ var result = native_.callSync('MLPipelineStart', nativeArgs);
+ if (native_.isFailure(result)) {
+ throw native_.getErrorObjectAndValidate(
+ result,
+ ValidPipelineStartStopExceptions,
+ AbortError
+ );
+ }
+};
//Pipeline::start() end
//Pipeline::stop() begin
+Pipeline.prototype.stop = function() {
+ var nativeArgs = {
+ id: this._id
+ };
+ var result = native_.callSync('MLPipelineStop', nativeArgs);
+ if (native_.isFailure(result)) {
+ throw native_.getErrorObjectAndValidate(
+ result,
+ ValidPipelineStartStopExceptions,
+ AbortError
+ );
+ }
+};
//Pipeline::stop() end
//Pipeline::dispose() begin
REGISTER_METHOD(MLPipelineManagerCreatePipeline);
REGISTER_METHOD(MLPipelineGetState);
REGISTER_METHOD(MLPipelineDispose);
+ REGISTER_METHOD(MLPipelineStart);
+ REGISTER_METHOD(MLPipelineStop);
// Pipeline API end
#undef REGISTER_METHOD
// Pipeline::state end
// Pipeline::start() begin
+void MlInstance::MLPipelineStart(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>());
+ PlatformResult result = pipeline_manager_.Start(id);
+
+ if (!result) {
+ ReportError(result, &out);
+ return;
+ }
+
+ ReportSuccess(out);
+}
// Pipeline::start() end
// Pipeline::stop() begin
+void MlInstance::MLPipelineStop(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>());
+
+ PlatformResult result = pipeline_manager_.Stop(id);
+
+ if (!result) {
+ LogAndReportError(result, &out);
+ return;
+ }
+
+ ReportSuccess(out);
+}
// Pipeline::stop() end
// Pipeline::dispose() begin
// Valve::setOpen() begin
// Valve::setOpen() end
+
// Pipeline API end
} // namespace ml
// Pipeline::state end
// Pipeline::start() begin
-
+ void MLPipelineStart(const picojson::value& args, picojson::object& out);
// Pipeline::start() end
// Pipeline::stop() begin
-
+ void MLPipelineStop(const picojson::value& args, picojson::object& out);
// Pipeline::stop() end
// Pipeline::dispose() begin
// Pipeline::state end
// Pipeline::start() begin
+PlatformResult Pipeline::Start() {
+ ScopeLogger("id_: [%d]", id_);
+ auto ret = ml_pipeline_start(pipeline_);
+ if (ML_ERROR_NONE != ret) {
+ LoggerE("ml_pipeline_start() failed: [%d] (%s)", ret, get_error_message(ret));
+ return util::ToPlatformResult(ret, "Could not start pipeline");
+ }
+ return PlatformResult{};
+}
// Pipeline::start() end
// Pipeline::stop() begin
+PlatformResult Pipeline::Stop() {
+ ScopeLogger("id_: [%d]", id_);
+ auto ret = ml_pipeline_stop(pipeline_);
+ if (ML_ERROR_NONE != ret) {
+ LoggerE("ml_pipeline_stop() failed: [%d] (%s)", ret, get_error_message(ret));
+ return util::ToPlatformResult(ret, "Could not stop pipeline");
+ }
+ return PlatformResult{};
+}
// Pipeline::stop() end
// Pipeline::dispose() begin
// Pipeline::state end
// Pipeline::start() begin
-
+ PlatformResult Start();
// Pipeline::start() end
// Pipeline::stop() begin
-
+ PlatformResult Stop();
// Pipeline::stop() end
// Pipeline::dispose() begin
} // namespace ml
} // namespace extension
-#endif // ML_ML_PIPELINE_H_
\ No newline at end of file
+#endif // ML_ML_PIPELINE_H_
// Pipeline::state end
// Pipeline::start() begin
+PlatformResult PipelineManager::Start(int id) {
+ ScopeLogger("id: [%d]", id);
+ auto pipeline_it = pipelines_.find(id);
+ if (pipelines_.end() == pipeline_it) {
+ LoggerD("Pipeline not found: [%d]", id);
+ return PlatformResult{ErrorCode::NOT_FOUND_ERR, "Pipeline not found"};
+ }
+
+ auto ret = pipeline_it->second->Start();
+ return ret;
+}
// Pipeline::start() end
// Pipeline::stop() begin
+PlatformResult PipelineManager::Stop(int id) {
+ ScopeLogger("id: [%d]", id);
+ auto pipeline_it = pipelines_.find(id);
+ if (pipelines_.end() == pipeline_it) {
+ LoggerD("Pipeline not found: [%d]", id);
+ return PlatformResult{ErrorCode::NOT_FOUND_ERR, "Pipeline not found"};
+ }
+
+ auto ret = pipeline_it->second->Stop();
+ return ret;
+}
// Pipeline::stop() end
// Pipeline::dispose() begin
// Pipeline::state end
// Pipeline::start() begin
-
+ PlatformResult Start(int id);
// Pipeline::start() end
// Pipeline::stop() begin
-
+ PlatformResult Stop(int id);
// Pipeline::stop() end
// Pipeline::dispose() begin
} // namespace ml
} // namespace extension
-#endif // ML_ML_PIPELINE_MANAGER_H_
\ No newline at end of file
+#endif // ML_ML_PIPELINE_MANAGER_H_