void yarp::os::impl::PortCoreAdapter::finishWriting() { if (isWriting()) { double start = SystemClock::nowSystem(); double pause = 0.01; do { SystemClock::delaySystem(pause); pause *= 2; } while (isWriting() && (SystemClock::nowSystem()-start<3)); if (isWriting()) { YARP_ERROR(Logger::get(), "Closing port that was sending data (slowly)"); } } }
void MemoryBackingStoreTransaction::addExistingIndex(MemoryIndex& index) { LOG(IndexedDB, "MemoryBackingStoreTransaction::addExistingIndex"); ASSERT(isWriting()); ASSERT(!m_indexes.contains(&index)); m_indexes.add(&index); }
void MemoryBackingStoreTransaction::finish() { m_inProgress = false; if (!isWriting()) return; for (auto objectStore : m_objectStores) objectStore->writeTransactionFinished(*this); }
void MemoryBackingStoreTransaction::addExistingObjectStore(MemoryObjectStore& objectStore) { LOG(IndexedDB, "MemoryBackingStoreTransaction::addExistingObjectStore"); ASSERT(isWriting()); ASSERT(!m_objectStores.contains(&objectStore)); m_objectStores.add(&objectStore); objectStore.writeTransactionStarted(*this); }
void MemoryBackingStoreTransaction::addExistingObjectStore(MemoryObjectStore& objectStore) { LOG(IndexedDB, "MemoryBackingStoreTransaction::addExistingObjectStore"); ASSERT(isWriting()); ASSERT(!m_objectStores.contains(&objectStore)); m_objectStores.add(&objectStore); objectStore.writeTransactionStarted(*this); m_originalKeyGenerators.add(&objectStore, objectStore.currentKeyGeneratorValue()); }
IDBError MemoryIDBBackingStore::clearObjectStore(const IDBResourceIdentifier& transactionIdentifier, uint64_t objectStoreIdentifier) { LOG(IndexedDB, "MemoryIDBBackingStore::clearObjectStore"); ASSERT(objectStoreIdentifier); ASSERT_UNUSED(transactionIdentifier, m_transactions.contains(transactionIdentifier)); #if !LOG_DISABLED auto transaction = m_transactions.get(transactionIdentifier); ASSERT(transaction->isWriting()); #endif auto objectStore = m_objectStoresByIdentifier.get(objectStoreIdentifier); if (!objectStore) return { IDBDatabaseException::ConstraintError }; objectStore->clear(); return { }; }
IDBError MemoryIDBBackingStore::beginTransaction(const IDBTransactionInfo& info) { LOG(IndexedDB, "MemoryIDBBackingStore::beginTransaction"); if (m_transactions.contains(info.identifier())) return { IDBDatabaseException::InvalidStateError, "Backing store asked to create transaction it already has a record of" }; auto transaction = MemoryBackingStoreTransaction::create(*this, info); // VersionChange transactions are scoped to "every object store". if (transaction->isVersionChange()) { for (auto& objectStore : m_objectStoresByIdentifier.values()) transaction->addExistingObjectStore(*objectStore); } else if (transaction->isWriting()) { for (auto& iterator : m_objectStoresByName) { if (info.objectStores().contains(iterator.key)) transaction->addExistingObjectStore(*iterator.value); } } m_transactions.set(info.identifier(), WTFMove(transaction)); return { }; }
bool JsonDbBtree::rollback() { Q_ASSERT(mBtree && !isWriting()); return mBtree->rollback(); }
bool JsonDbBtree::clearData() { Q_ASSERT(isWriting() == false); return mBtree->clearData(); }