// Copyright 2017 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_PEERCONNECTION_TWO_KEYS_ADAPTER_MAP_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_PEERCONNECTION_TWO_KEYS_ADAPTER_MAP_H_ #include <memory> #include <optional> #include <utility> #include "base/check.h" #include "base/containers/contains.h" #include "base/not_fatal_until.h" #include "third_party/blink/renderer/platform/wtf/hash_map.h" namespace blink { // A map with up to two keys per entry. An element is inserted with a key, this // is the primary key. A secondary key can optionally be set to the same entry // and it may be set at a later point in time than the element was inserted. For // lookup and erasure both keys can be used. // // This was designed to assist the implementation of adapter maps. The adapters // are the glue between the blink and webrtc layer objects. The adapter maps // keep track of which blink and webrtc layer objects have which associated // adapter. This requires two keys per adapter entry: something that can be used // for lookup based on a webrtc layer object and something that can be used for // lookup based on a blink layer object. The primary key is based on the // webrtc/blink object that was used to create the adapter and the secondary key // is based on the resulting blink/webrtc object after the adapter has been // initialized. template <typename PrimaryKey, typename SecondaryKey, typename Value> class TwoKeysAdapterMap { … }; } // namespace blink #endif // THIRD_PARTY_BLINK_RENDERER_PLATFORM_PEERCONNECTION_TWO_KEYS_ADAPTER_MAP_H_