PreclaimResult preclaim (PreflightResult const& preflightResult, Application& app, OpenView const& view) { boost::optional<PreclaimContext const> ctx; if (preflightResult.rules != view.rules()) { auto secondFlight = preflight(app, view.rules(), preflightResult.tx, preflightResult.flags, preflightResult.j); ctx.emplace(app, view, secondFlight.ter, secondFlight.tx, secondFlight.flags, secondFlight.j); } else { ctx.emplace( app, view, preflightResult.ter, preflightResult.tx, preflightResult.flags, preflightResult.j); } try { if (ctx->preflightResult != tesSUCCESS) return { *ctx, ctx->preflightResult, 0 }; return{ *ctx, invoke_preclaim(*ctx) }; } catch (std::exception const& e) { JLOG(ctx->j.fatal) << "apply: " << e.what(); return{ *ctx, tefEXCEPTION, 0 }; } }
std::pair<TER, bool> apply (Application& app, OpenView& view, STTx const& tx, ApplyFlags flags, beast::Journal j) { STAmountSO saved(view.info().parentCloseTime); auto pfresult = preflight(app, view.rules(), tx, flags, j); auto pcresult = preclaim(pfresult, app, view); return doApply(pcresult, app, view); }
int main(int argc, char** argv) { // keep these values available for later mp_argc = argc; mp_argv = argv; #else int main(void) { mcu_init(); #endif #if (USE_TELELOG == 1) log_init(); #endif #if (USE_USB == 1) preflight(); // perhaps this would be better called usb_init() #endif gps_init(); // this sets function pointers so i'm calling it early for now udb_init(); dcm_init(); init_config(); // this will need to be moved up in order to support runtime hardware options #if (FLIGHT_PLAN_TYPE == FP_WAYPOINTS) init_waypoints(); #endif init_servoPrepare(); init_states(); init_behavior(); init_serial(); if (setjmp(buf)) { // a processor exception occurred and we're resuming execution here DPRINT("longjmp'd\r\n"); } #ifdef _MSC_VER #if (SERIAL_OUTPUT_FORMAT == SERIAL_MAVLINK) parameter_table_init(); #endif // SERIAL_OUTPUT_FORMAT #endif // _MSC_VER while (1) { #if (USE_TELELOG == 1) telemetry_log(); #endif #if (USE_USB == 1) USBPollingService(); #endif #if (CONSOLE_UART != 0 && SILSIM == 0) console(); #endif udb_run(); } return 0; }
void MLPluginProcessor::prepareToPlay (double sr, int maxFramesPerBlock) { MLProc::err prepareErr; MLProc::err r = preflight(); if (!mpPluginDoc.get()) return; if (r == MLProc::OK) { // get the Juce process lock // TODO ??? const ScopedLock sl (getCallbackLock()); unsigned inChans = getNumInputChannels(); unsigned outChans = getNumOutputChannels(); mEngine.setInputChannels(inChans); mEngine.setOutputChannels(outChans); unsigned bufSize = 0; unsigned chunkSize = 0; // choose new buffer size and vector size. { // bufSize is the smallest power of two greater than maxFramesPerBlock. int maxFramesBits = bitsToContain(maxFramesPerBlock); bufSize = 1 << maxFramesBits; // vector size is desired processing block size, set this to default size of signal. chunkSize = min((int)bufSize, (int)kMLProcessChunkSize); } // dsp engine has one chunkSize of latency in order to run constant block size. setLatencySamples(chunkSize); // debug() << "MLPluginProcessor: prepareToPlay: rate " << sr << ", buffer size " << bufSize << ", vector size " << vecSize << ". \n"; // build: turn XML description into graph of processors if (mEngine.getGraphStatus() != MLProc::OK) { bool makeSignalInputs = inChans > 0; r = mEngine.buildGraphAndInputs(&*mpPluginDoc, makeSignalInputs, wantsMIDI()); // debug() << getNumParameters() << " parameters in description.\n"; } else { // debug() << "MLPluginProcessor graph OK.\n"; } #ifdef DEBUG theSymbolTable().audit(); //theSymbolTable().dump(); #endif // compile: schedule graph of processors , setup connections, allocate buffers if (mEngine.getCompileStatus() != MLProc::OK) { mEngine.compileEngine(); } else { debug() << "compile OK.\n"; } // prepare to play: resize and clear processors prepareErr = mEngine.prepareEngine(sr, bufSize, chunkSize); if (prepareErr != MLProc::OK) { debug() << "MLPluginProcessor: prepareToPlay error: \n"; } // mEngine.dump(); // after prepare to play, set state from saved blob if one exists const unsigned blobSize = mSavedParamBlob.getSize(); if (blobSize > 0) { setStateFromBlob (mSavedParamBlob.getData(), blobSize); mSavedParamBlob.setSize(0); } else { mEngine.clear(); if (!mHasParametersSet) { loadDefaultPreset(); } } if(!mInitialized) { initializeProcessor(); mInitialized = true; } mEngine.setEnabled(prepareErr == MLProc::OK); } }