ITADN

Scheduler usage

#236Closedadamski 创建于 2024-07-31
O-Community
A
adamskicommented
I'd like to make use of the scheduler so that I can check login status on a thread, and set up the realm once logged in on the main thread. I'm using `Scheduler::invoke` on a scheduler created with `Scheduler::make_default()`. Is there something I'm missing? ```cpp auto scheduler = realm::util::Scheduler::make_default(); std::thread loginThread ([this, username, scheduler]() { try { std::future_status status; // TODO: Improve security with JWT based login std::string credentials = "{ \"username\": \"" + username + "\" }"; std::cout << "Logging in..." << std::endl; auto userFuture = app->login (realm::App::credentials::function (credentials)); std::cout << "Waiting for response" << std::endl; do { switch (status = userFuture.wait_for (50ms); status) { case std::future_status::deferred: std::cout << "deferred\n"; break; case std::future_status::timeout: std::cout << "timeout\n"; break; case std::future_status::ready: std::cout << "ready!\n"; break; } } while (status != std::future_status::ready); user = userFuture.get(); std::cout << "Logged in. User ID is " << user.identifier() << '\n'; scheduler->invoke ([this] { setupSyncedRealm(); setupSubscriptions(); setupObservers(); }); } catch (const realm::app_error& e) { std::cout << "Error logging in: " << e.message() << std::endl; return; } }); loginThread.detach(); ```
关闭于 2024-08-02 2 条评论