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"
11 #include "nsPrintfCString.h"
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())
25 class OriginAttributes
;
29 class CacheHash
: public nsISupports
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
,
41 explicit CacheHash(uint32_t aInitval
=0);
43 void Update(const char *aData
, uint32_t aLen
);
48 virtual ~CacheHash() = default;
50 void Feed(uint32_t aVal
, uint8_t aLen
= 4);
60 typedef uint64_t OriginAttrsHash
;
62 OriginAttrsHash
GetOriginAttrsHash(const mozilla::OriginAttributes
&aOA
);
65 } // namespace mozilla