diff --git a/app/br/br.cpp b/app/br/br.cpp index befe985..949b277 100644 --- a/app/br/br.cpp +++ b/app/br/br.cpp @@ -223,6 +223,11 @@ public: check(parc == 1, "Incorrect parameter count for 'daemon'."); daemon = true; daemon_pipe = parv[0]; + } else if (!strcmp(fun, "slave")) { + // This is used internally by processWrapper, if you want to remove it, also remove + // plugins/core/processwrapper.cpp + check(parc == 1, "Incorrect parameter count for 'slave'"); + br_slave_process(parv[0]); } else if (!strcmp(fun, "exit")) { check(parc == 0, "No parameters expected for 'exit'."); daemon = false; diff --git a/openbr/openbr.cpp b/openbr/openbr.cpp index f0583cf..97155ec 100644 --- a/openbr/openbr.cpp +++ b/openbr/openbr.cpp @@ -316,6 +316,20 @@ const char *br_version() return version.data(); } +void br_slave_process(const char *baseName) +{ +#ifdef BR_WITH_QTNETWORK + WorkerProcess *worker = new WorkerProcess; + worker->transform = Globals->algorithm; + worker->baseName = baseName; + worker->mainLoop(); + delete worker; +#else + (void) baseName; + qFatal("multiprocess support requires building with QtNetwork enabled (set BR_WITH_QTNETWORK in cmake)."); +#endif +} + br_template br_load_img(const char *data, int len) { std::vector buf(data, data+len); diff --git a/openbr/openbr.h b/openbr/openbr.h index 574d242..12a769a 100644 --- a/openbr/openbr.h +++ b/openbr/openbr.h @@ -117,6 +117,8 @@ BR_EXPORT void br_train_n(int num_inputs, const char *inputs[], const char *mode BR_EXPORT const char *br_version(); +BR_EXPORT void br_slave_process(const char * baseKey); + BR_EXPORT void br_likely(const char *input_type, const char *output_type, const char *output_source_file); // to avoid having to include unwanted headers diff --git a/openbr/plugins/cmake/network.cmake b/openbr/plugins/cmake/network.cmake index 9842ec8..d05fb99 100644 --- a/openbr/plugins/cmake/network.cmake +++ b/openbr/plugins/cmake/network.cmake @@ -7,6 +7,7 @@ if(${BR_WITH_QTNETWORK}) if(${BR_INSTALL_SHARE}) install(FILES ${HTTPPARSER_LICENSE} RENAME http-parser DESTINATION share/openbr/licenses) endif() + add_definitions(-DBR_WITH_QTNETWORK) else() set(BR_EXCLUDED_PLUGINS ${BR_EXCLUDED_PLUGINS} plugins/core/processwrapper.cpp plugins/io/download.cpp