Add doxygen comments for resource-encapsulation
[iotivity.git] / service / resource-encapsulation / src / resourceCache / include / CacheTypes.h
1 /******************************************************************
2  *
3  * Copyright 2015 Samsung Electronics All Rights Reserved.
4  *
5  *
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  ******************************************************************/
20
21 #ifndef RCM_CACHETYPES_H
22 #define RCM_CACHETYPES_H
23
24 #include <functional>
25 #include <map>
26 #include <memory>
27 #include <string>
28
29 #include "experimental/logger.h"
30
31 #include "PrimitiveResource.h"
32 #include "RCSResourceAttributes.h"
33
34 namespace OIC
35 {
36     namespace Service
37     {
38
39         class DataCache;
40
41 #define CACHE_TAG  "CACHE"   /*!< cache tag information */
42 #define CACHE_DEFAULT_REPORT_MILLITIME 10000 /*!< default report time */
43 #define CACHE_DEFAULT_EXPIRED_MILLITIME 15000 /*!< default expired time */
44
45         /** enum for report frequency value */
46         enum class REPORT_FREQUENCY
47         {
48             NONE = 0,
49             UPTODATE,
50             PERIODICTY
51         };
52
53         struct Report_Info
54         {
55             REPORT_FREQUENCY rf;
56             int reportID;               /*!< report id */
57             long repeatTime;            /*!< repeat time */
58             unsigned int timerID;       /*!< timer id */
59         };
60
61         /** enum for cache state */
62         enum class CACHE_STATE
63         {
64             READY = 0,
65             READY_YET,
66             LOST_SIGNAL,
67             DESTROYED,
68             UPDATING,
69             NONE
70         };
71
72         /** enum for cache mode */
73         enum class CACHE_MODE
74         {
75             OBSERVE = 0,
76             FREQUENCY
77         };
78
79         /** enum for cache method */
80         enum class CACHE_METHOD
81         {
82             OBSERVE_ONLY,
83             ITERATED_GET
84         };
85
86         typedef int CacheID;
87
88         typedef std::function<OCStackResult(std::shared_ptr<PrimitiveResource>,
89                         const RCSResourceAttributes &, int eCode)> CacheCB;
90         typedef std::map<int, std::pair<Report_Info, CacheCB>> SubscriberInfo;
91         typedef std::pair<int, std::pair<Report_Info, CacheCB>> SubscriberInfoPair;
92
93         typedef OC::OCResource BaseResource;
94         typedef PrimitiveResource::GetCallback GetCB;
95         typedef PrimitiveResource::ObserveCallback ObserveCB;
96
97         typedef std::shared_ptr<DataCache> DataCachePtr;
98         typedef std::shared_ptr<PrimitiveResource> PrimitiveResourcePtr;
99     } /* namespace Service */
100 } /* namespace OIC */
101
102 #endif /* RCM_CACHETYPES_H */