/* * Copyright (c) 2024, stelar7 * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include namespace Web::IndexedDB { class ConnectionQueue : public AK::Vector> { public: bool all_previous_requests_processed(GC::Ref const& request) const { for (auto const& entry : *this) { if (entry == request) return true; if (!entry->processed()) return false; } return true; } }; using ConnectionMap = HashMap>; // https://w3c.github.io/IndexedDB/#connection-queues class ConnectionQueueHandler { public: static ConnectionQueue& for_key_and_name(StorageAPI::StorageKey& key, String& name); static ConnectionQueueHandler& the() { static ConnectionQueueHandler s_instance; return s_instance; } private: ConnectionMap m_open_requests; }; }