- if (system.poll(&events, 1, -1) > 0 && (events.revents & POLLIN))
- asyncStorage->handleEvents();
+ pollAndHandleEvents(NO_TIMEOUT);
+}
+
+void SyncStorageImpl::pollAndHandleEvents(int timeout_ms)
+{
+ if (system.poll(&events, 1, timeout_ms) > 0 && (events.revents & POLLIN))
+ asyncStorage->handleEvents();
+}
+
+void SyncStorageImpl::waitForReadinessCheckCallback()
+{
+ if (operationTimeout == std::chrono::steady_clock::duration::zero())
+ {
+ while (!isReady)
+ pollAndHandleEvents(NO_TIMEOUT);
+ }
+ else
+ {
+ int pollTimeout_ms = std::chrono::duration_cast<std::chrono::milliseconds>(operationTimeout).count() / 10;
+ std::chrono::steady_clock::time_point start = std::chrono::steady_clock::now();
+ while(!isReady && (std::chrono::steady_clock::now() - start < operationTimeout))
+ pollAndHandleEvents(pollTimeout_ms);
+ }