[IOT-3293] Proper PSK hint for random pin
[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 /** OIC namespace */
35 namespace OIC
36 {
37     /** service namespace */
38     namespace Service
39     {
40
41         class DataCache;
42
43 #define CACHE_TAG  "CACHE"   /*!< cache tag information */
44 #define CACHE_DEFAULT_REPORT_MILLITIME 10000 /*!< default report time */
45 #define CACHE_DEFAULT_EXPIRED_MILLITIME 15000 /*!< default expired time */
46
47         /** enum for report frequency value */
48         enum class REPORT_FREQUENCY
49         {
50             NONE = 0,        /**< Initialize frequency */
51             UPTODATE,        /**< up to date frequency */
52             PERIODICTY       /**< periodicty frequency */
53         };
54
55         struct Report_Info
56         {
57             REPORT_FREQUENCY rf;
58             int reportID;               /**< report id */
59             long repeatTime;            /**< repeat time */
60             unsigned int timerID;       /**< timer id */
61         };
62
63         /** enum for cache state */
64         enum class CACHE_STATE
65         {
66             READY = 0,          /**< ready state */
67             READY_YET,          /**< ready yet state */
68             LOST_SIGNAL,        /**< lost signal state */
69             DESTROYED,          /**< destroyed state */
70             UPDATING,           /**< updating state */
71             NONE                /**< none state */
72         };
73
74         /** enum for cache mode */
75         enum class CACHE_MODE
76         {
77             OBSERVE = 0,         /**< observe mode */
78             FREQUENCY            /**< frequency of mode */
79         };
80
81         /** enum for cache method */
82         enum class CACHE_METHOD
83         {
84             OBSERVE_ONLY,           /**< observe only method */
85             ITERATED_GET            /**< iterated get method */
86         };
87
88         typedef int CacheID;
89
90         typedef std::function<OCStackResult(std::shared_ptr<PrimitiveResource>,
91                         const RCSResourceAttributes &, int eCode)> CacheCB;
92         typedef std::map<int, std::pair<Report_Info, CacheCB>> SubscriberInfo;
93         typedef std::pair<int, std::pair<Report_Info, CacheCB>> SubscriberInfoPair;
94
95         typedef OC::OCResource BaseResource;
96         typedef PrimitiveResource::GetCallback GetCB;
97         typedef PrimitiveResource::ObserveCallback ObserveCB;
98
99         typedef std::shared_ptr<DataCache> DataCachePtr;
100         typedef std::shared_ptr<PrimitiveResource> PrimitiveResourcePtr;
101     } /* namespace Service */
102 } /* namespace OIC */
103
104 #endif /* RCM_CACHETYPES_H */