Commit ef8660190eac9c17304d0bc6868dcffd63d7f79e

Authored by Josh Klontz
2 parents 237af8f5 3020b509

Merge pull request #480 from biometrics/fix_process

Fix multiprocess support
app/br/br.cpp
@@ -223,6 +223,11 @@ public: @@ -223,6 +223,11 @@ public:
223 check(parc == 1, "Incorrect parameter count for 'daemon'."); 223 check(parc == 1, "Incorrect parameter count for 'daemon'.");
224 daemon = true; 224 daemon = true;
225 daemon_pipe = parv[0]; 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 } else if (!strcmp(fun, "exit")) { 231 } else if (!strcmp(fun, "exit")) {
227 check(parc == 0, "No parameters expected for 'exit'."); 232 check(parc == 0, "No parameters expected for 'exit'.");
228 daemon = false; 233 daemon = false;
openbr/openbr.cpp
@@ -316,6 +316,20 @@ const char *br_version() @@ -316,6 +316,20 @@ const char *br_version()
316 return version.data(); 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 br_template br_load_img(const char *data, int len) 333 br_template br_load_img(const char *data, int len)
320 { 334 {
321 std::vector<char> buf(data, data+len); 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,6 +117,8 @@ BR_EXPORT void br_train_n(int num_inputs, const char *inputs[], const char *mode
117 117
118 BR_EXPORT const char *br_version(); 118 BR_EXPORT const char *br_version();
119 119
  120 +BR_EXPORT void br_slave_process(const char * baseKey);
  121 +
120 BR_EXPORT void br_likely(const char *input_type, const char *output_type, const char *output_source_file); 122 BR_EXPORT void br_likely(const char *input_type, const char *output_type, const char *output_source_file);
121 123
122 // to avoid having to include unwanted headers 124 // to avoid having to include unwanted headers
openbr/plugins/cmake/network.cmake
@@ -7,6 +7,7 @@ if(${BR_WITH_QTNETWORK}) @@ -7,6 +7,7 @@ if(${BR_WITH_QTNETWORK})
7 if(${BR_INSTALL_SHARE}) 7 if(${BR_INSTALL_SHARE})
8 install(FILES ${HTTPPARSER_LICENSE} RENAME http-parser DESTINATION share/openbr/licenses) 8 install(FILES ${HTTPPARSER_LICENSE} RENAME http-parser DESTINATION share/openbr/licenses)
9 endif() 9 endif()
  10 + add_definitions(-DBR_WITH_QTNETWORK)
10 else() 11 else()
11 set(BR_EXCLUDED_PLUGINS ${BR_EXCLUDED_PLUGINS} plugins/core/processwrapper.cpp 12 set(BR_EXCLUDED_PLUGINS ${BR_EXCLUDED_PLUGINS} plugins/core/processwrapper.cpp
12 plugins/io/download.cpp 13 plugins/io/download.cpp