Bug 1494162 - Part 45: Lazy load Menu and MenuItem in TabBar. r=pbro
[gecko.git] / netwerk / cache2 / CacheHashUtils.h
blob72831354087c4b88a24ccf0c9f9d6def9cea79de
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 CacheHashUtils__h__
6 #define CacheHashUtils__h__
8 #include "nsISupports.h"
9 #include "mozilla/Types.h"
10 #include "prnetdb.h"
11 #include "nsPrintfCString.h"
13 #define LOGSHA1(x) \
14 PR_htonl((reinterpret_cast<const uint32_t *>(x))[0]), \
15 PR_htonl((reinterpret_cast<const uint32_t *>(x))[1]), \
16 PR_htonl((reinterpret_cast<const uint32_t *>(x))[2]), \
17 PR_htonl((reinterpret_cast<const uint32_t *>(x))[3]), \
18 PR_htonl((reinterpret_cast<const uint32_t *>(x))[4])
20 #define SHA1STRING(x) \
21 (nsPrintfCString("%08x%08x%08x%08x%08x", LOGSHA1(x)).get())
23 namespace mozilla {
25 class OriginAttributes;
27 namespace net {
29 class CacheHash : public nsISupports
31 public:
32 NS_DECL_THREADSAFE_ISUPPORTS
34 typedef uint16_t Hash16_t;
35 typedef uint32_t Hash32_t;
37 static Hash32_t Hash(const char* aData, uint32_t aSize, uint32_t aInitval=0);
38 static Hash16_t Hash16(const char* aData, uint32_t aSize,
39 uint32_t aInitval=0);
41 explicit CacheHash(uint32_t aInitval=0);
43 void Update(const char *aData, uint32_t aLen);
44 Hash32_t GetHash();
45 Hash16_t GetHash16();
47 private:
48 virtual ~CacheHash() = default;
50 void Feed(uint32_t aVal, uint8_t aLen = 4);
52 uint32_t mA, mB, mC;
53 uint8_t mPos;
54 uint32_t mBuf;
55 uint8_t mBufPos;
56 uint32_t mLength;
57 bool mFinalized;
60 typedef uint64_t OriginAttrsHash;
62 OriginAttrsHash GetOriginAttrsHash(const mozilla::OriginAttributes &aOA);
64 } // namespace net
65 } // namespace mozilla
67 #endif