#include #include #include #include #include #include int main(int argc, char *argv[], char *envp[]) { /* Set the pptr thread ID and thread before using any ComponentThread * functionality. */ sscl::ComponentThread::setPuppeteerThreadId(smo::SmoThreadId::MRNTT); sscl::ComponentThread::setPuppeteerThread(smo::mrntt::thread); pthread_setname_np(pthread_self(), "smo:CRT:main"); /* We don't do anything inside of main() * Main merely waits for the marionette thread to exit. */ std::cout << "CRT:" << __func__ << ": about to JOLT Mrntt with cmdline args" << '\n'; boost::asio::post(smo::mrntt::thread->getIoContext(), [argc, argv, envp]() { std::cout << "Mrntt:" << __func__ << ":JOLTED: setting cmdline args" << '\n'; sscl::CrtCommandLineArgs::set(argc, argv, envp); smo::mrntt::thread->getIoContext().stop(); } ); smo::mrntt::thread->thread.join(); std::cout << "CRT:" << __func__ << ": Mrntt exited with code '" << sscl::pptr::exitCode << "'\n"; return sscl::pptr::exitCode; }