Add Storage related classes to CMakeLists, fix includes
[platform/core/security/cynara.git] / src / service / storage / InMemoryStorageBackend.h
1 /*
2  * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
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 /*
17  * @file        InMemoryStorageBackend.h
18  * @author      Aleksander Zdyb <a.zdyb@partner.samsung.com>
19  * @version     1.0
20  * @brief       Headers for InMemoryStorageBackend
21  */
22
23 #ifndef INMEMORYSTORAGEBACKEND_H_
24 #define INMEMORYSTORAGEBACKEND_H_
25
26 #include "StorageBackend.h"
27 #include <exceptions/NotImplementedException.h>
28 #include <exceptions/BucketNotExistsException.h>
29 #include <types/Policy.h>
30
31 #include <unordered_map>
32 #include <algorithm>
33 #include <functional>
34 #include <iostream>
35
36 namespace Cynara {
37
38 class InMemoryStorageBackend: public StorageBackend {
39 public:
40     typedef std::unordered_map<PolicyBucketId, PolicyBucket> Buckets;
41
42     InMemoryStorageBackend();
43     virtual ~InMemoryStorageBackend();
44
45     virtual PolicyBucket searchDefaultBucket(const PolicyKey &key);
46     virtual PolicyBucket searchBucket(const PolicyBucketId &bucketId, const PolicyKey &key);
47     virtual void insertPolicy(const PolicyBucketId &bucketId, PolicyPtr policy);
48     virtual void createBucket(const PolicyBucketId &bucketId, const PolicyResult &defaultPolicy);
49     virtual void deleteBucket(const PolicyBucketId &bucketId);
50     virtual void deletePolicy(const PolicyBucketId &bucketId, const PolicyKey &key);
51     virtual void deleteLinking(const PolicyBucketId &bucketId);
52
53 private:
54     Buckets m_buckets;
55
56 protected:
57     virtual Buckets &buckets() {
58         return m_buckets;
59     }
60 };
61
62 } /* namespace Cynara */
63 #endif /* INMEMORYSTORAGEBACKEND_H_ */