Merge mozilla-central to autoland. CLOSED TREE
[gecko.git] / netwerk / base / RedirectChannelRegistrar.h
blob5041726043867da355c4f40c456024c389ee46f6
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 #ifndef RedirectChannelRegistrar_h__
6 #define RedirectChannelRegistrar_h__
8 #include "nsIRedirectChannelRegistrar.h"
10 #include "nsIChannel.h"
11 #include "nsIParentChannel.h"
12 #include "nsInterfaceHashtable.h"
13 #include "mozilla/Attributes.h"
14 #include "mozilla/Mutex.h"
16 namespace mozilla {
17 namespace net {
19 class RedirectChannelRegistrar final : public nsIRedirectChannelRegistrar {
20 NS_DECL_ISUPPORTS
21 NS_DECL_NSIREDIRECTCHANNELREGISTRAR
23 RedirectChannelRegistrar();
25 private:
26 ~RedirectChannelRegistrar() = default;
28 public:
29 // Singleton accessor
30 static already_AddRefed<nsIRedirectChannelRegistrar> GetOrCreate();
32 protected:
33 using ChannelHashtable = nsInterfaceHashtable<nsUint64HashKey, nsIChannel>;
34 using ParentChannelHashtable =
35 nsInterfaceHashtable<nsUint64HashKey, nsIParentChannel>;
37 ChannelHashtable mRealChannels;
38 ParentChannelHashtable mParentChannels;
39 Mutex mLock MOZ_UNANNOTATED;
41 static StaticRefPtr<RedirectChannelRegistrar> gSingleton;
44 } // namespace net
45 } // namespace mozilla
47 #endif