Commit ef8660190eac9c17304d0bc6868dcffd63d7f79e
Merge pull request #480 from biometrics/fix_process
Fix multiprocess support
Showing
4 changed files
with
22 additions
and
0 deletions
app/br/br.cpp
| ... | ... | @@ -223,6 +223,11 @@ public: |
| 223 | 223 | check(parc == 1, "Incorrect parameter count for 'daemon'."); |
| 224 | 224 | daemon = true; |
| 225 | 225 | daemon_pipe = parv[0]; |
| 226 | + } else if (!strcmp(fun, "slave")) { | |
| 227 | + // This is used internally by processWrapper, if you want to remove it, also remove | |
| 228 | + // plugins/core/processwrapper.cpp | |
| 229 | + check(parc == 1, "Incorrect parameter count for 'slave'"); | |
| 230 | + br_slave_process(parv[0]); | |
| 226 | 231 | } else if (!strcmp(fun, "exit")) { |
| 227 | 232 | check(parc == 0, "No parameters expected for 'exit'."); |
| 228 | 233 | daemon = false; | ... | ... |
openbr/openbr.cpp
| ... | ... | @@ -316,6 +316,20 @@ const char *br_version() |
| 316 | 316 | return version.data(); |
| 317 | 317 | } |
| 318 | 318 | |
| 319 | +void br_slave_process(const char *baseName) | |
| 320 | +{ | |
| 321 | +#ifdef BR_WITH_QTNETWORK | |
| 322 | + WorkerProcess *worker = new WorkerProcess; | |
| 323 | + worker->transform = Globals->algorithm; | |
| 324 | + worker->baseName = baseName; | |
| 325 | + worker->mainLoop(); | |
| 326 | + delete worker; | |
| 327 | +#else | |
| 328 | + (void) baseName; | |
| 329 | + qFatal("multiprocess support requires building with QtNetwork enabled (set BR_WITH_QTNETWORK in cmake)."); | |
| 330 | +#endif | |
| 331 | +} | |
| 332 | + | |
| 319 | 333 | br_template br_load_img(const char *data, int len) |
| 320 | 334 | { |
| 321 | 335 | std::vector<char> buf(data, data+len); | ... | ... |
openbr/openbr.h
| ... | ... | @@ -117,6 +117,8 @@ BR_EXPORT void br_train_n(int num_inputs, const char *inputs[], const char *mode |
| 117 | 117 | |
| 118 | 118 | BR_EXPORT const char *br_version(); |
| 119 | 119 | |
| 120 | +BR_EXPORT void br_slave_process(const char * baseKey); | |
| 121 | + | |
| 120 | 122 | BR_EXPORT void br_likely(const char *input_type, const char *output_type, const char *output_source_file); |
| 121 | 123 | |
| 122 | 124 | // to avoid having to include unwanted headers | ... | ... |
openbr/plugins/cmake/network.cmake
| ... | ... | @@ -7,6 +7,7 @@ if(${BR_WITH_QTNETWORK}) |
| 7 | 7 | if(${BR_INSTALL_SHARE}) |
| 8 | 8 | install(FILES ${HTTPPARSER_LICENSE} RENAME http-parser DESTINATION share/openbr/licenses) |
| 9 | 9 | endif() |
| 10 | + add_definitions(-DBR_WITH_QTNETWORK) | |
| 10 | 11 | else() |
| 11 | 12 | set(BR_EXCLUDED_PLUGINS ${BR_EXCLUDED_PLUGINS} plugins/core/processwrapper.cpp |
| 12 | 13 | plugins/io/download.cpp | ... | ... |