blob: 95464a98090bba9e5b3df740afae17cdf83e0a88 [file] [log] [blame]
Sadik Armagan8f397a12022-06-17 15:38:22 +01001//
2// Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#pragma once
7
8#include <vector>
9#include <unordered_map>
10
11#include <nnapi/Types.h>
12
13namespace armnn_driver
14{
15
16class CacheHandle
17{
18public:
19 CacheHandle(const android::nn::CacheToken token, const size_t cacheSize)
20 : m_CacheToken(token), m_CacheSize(cacheSize) {}
21
22 ~CacheHandle() {};
23
24 android::nn::CacheToken GetToken() const
25 {
26 return m_CacheToken;
27 }
28
29 size_t GetCacheSize() const
30 {
31 return m_CacheSize;
32 }
33
34private:
35 const android::nn::CacheToken m_CacheToken;
36 const size_t m_CacheSize;
37};
38
39class CacheDataHandler
40{
41public:
42 CacheDataHandler() {}
43 ~CacheDataHandler() {}
44
45 void Register(const android::nn::CacheToken token, const size_t hashValue, const size_t cacheSize);
46
47 bool Validate(const android::nn::CacheToken token, const size_t hashValue, const size_t cacheSize) const;
48
49 size_t Hash(std::vector<uint8_t>& cacheData);
50
51 size_t GetCacheSize(android::nn::CacheToken token);
52
53 void Clear();
54
55private:
56 CacheDataHandler(const CacheDataHandler&) = delete;
57 CacheDataHandler& operator=(const CacheDataHandler&) = delete;
58
59 std::unordered_map<size_t, CacheHandle> m_CacheDataMap;
60};
61
62CacheDataHandler& CacheDataHandlerInstance();
63
64} // armnn_driver