void ProcessForker::run() { ReceiveBuffer buffer; while (_processMessages) { const auto result = _communicator.probe(); if (!result.isValid()) { print_log(LOG_ERROR, LOG_MPI, "Invalid probe result size: %d", result.size); continue; } buffer.setSize(result.size); _communicator.receive(result.src, buffer.data(), buffer.size(), int(result.messageType)); switch (result.messageType) { case MessageType::START_PROCESS: { const auto string = serialization::get<QString>(buffer); const auto args = string.split('#'); if (args.length() != 3) { print_log(LOG_WARN, LOG_MPI, "Invalid command: '%d'", string.toLocal8Bit().constData()); break; } _launch(args[0], args[1], args[2].split(';')); break; } case MessageType::QUIT: _processMessages = false; break; default: print_log(LOG_WARN, LOG_MPI, "Invalid message type: '%d'", result.messageType); break; } } }
OSS_INLINE INT32 _accept( const _MsgClsElectionBallot *msg ) { return _launch( msg->weights, msg->identity, CLS_ELECTION_ROUND_STAGE_TWO ) ; }
OSS_INLINE INT32 _announce() { return _launch( CLS_ELECTION_ROUND_STAGE_TWO ) ; }
OSS_INLINE INT32 _vote() { return _launch( CLS_ELECTION_ROUND_STAGE_ONE ) ; }
int launcher_rvgl::start_client(const std::string &host_id) { return _launch(host_id); }
int launcher_rvgl::start_host() { return _launch(""); }
int lua_init(struct lua *lua, struct pixel *ctx, const char *param) { return _launch(ctx, lua, param); }