1/*
2// Copyright (c) 2014 Intel Corporation 
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8//      http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15*/
16#ifndef BUFFERCACHE_H_
17#define BUFFERCACHE_H_
18
19#include <utils/KeyedVector.h>
20#include <BufferMapper.h>
21
22namespace android {
23namespace intel {
24
25// Generic buffer cache
26class BufferCache {
27public:
28    BufferCache(int size);
29    virtual ~BufferCache();
30    // add a new mapper into buffer cache
31    virtual bool addMapper(uint64_t handle, BufferMapper* mapper);
32    //remove mapper
33    virtual bool removeMapper(BufferMapper* mapper);
34    // get a buffer mapper
35    virtual BufferMapper* getMapper(uint64_t handle);
36    // get cache size
37    virtual size_t getCacheSize() const;
38    // get mapper with an index
39    virtual BufferMapper* getMapper(uint32_t index);
40private:
41    KeyedVector<uint64_t, BufferMapper*> mBufferPool;
42};
43
44}
45}
46
47
48#endif /* BUFFERCACHE_H_ */
49