Merge remote-tracking branch 'origin/master' into notification-service
[platform/upstream/iotivity.git] / service / notification / cpp-wrapper / common / NSMessage.h
1 //******************************************************************\r
2 //\r
3 // Copyright 2016 Samsung Electronics All Rights Reserved.\r
4 //\r
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
6 //\r
7 // Licensed under the Apache License, Version 2.0 (the "License");\r
8 // you may not use this file except in compliance with the License.\r
9 // You may obtain a copy of the License at\r
10 //\r
11 //      http://www.apache.org/licenses/LICENSE-2.0\r
12 //\r
13 // Unless required by applicable law or agreed to in writing, software\r
14 // distributed under the License is distributed on an "AS IS" BASIS,\r
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
16 // See the License for the specific language governing permissions and\r
17 // limitations under the License.\r
18 //\r
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
20 \r
21 /**\r
22  * @file\r
23  *\r
24  * This file contains Notification service Message representation.\r
25  */\r
26 \r
27 #ifndef _NS_MESSAGE_H_\r
28 #define _NS_MESSAGE_H_\r
29 \r
30 #include <string>\r
31 #include "NSMediaContents.h"\r
32 \r
33 namespace OIC\r
34 {\r
35     namespace Service\r
36     {\r
37         /**\r
38          * @class   NSMessage\r
39          * @brief   This class provides a set of APIs for Notification service Message .\r
40          */\r
41         class NSMessage\r
42         {\r
43             public:\r
44                 /** NSMessageType - enumeration for Notification service MessageType*/\r
45                 enum class NSMessageType\r
46                 {\r
47                     NS_MESSAGE_ALERT = 0,\r
48                     NS_MESSAGE_NOTICE = 1,\r
49                     NS_MESSAGE_EVENT = 2,\r
50                     NS_MESSAGE_INFO = 3,\r
51                 };\r
52 \r
53                 /**\r
54                         * Constructor of NSMessage.\r
55                         */\r
56                 NSMessage(): m_mediaContents(new NSMediaContents) { }\r
57 \r
58                 /**\r
59                         * Constructor of NSMessage.\r
60                         *\r
61                         * @param msg - pointer to NSMessage struct to initialize.\r
62                         */\r
63                 NSMessage(::NSMessage *msg);\r
64 \r
65                 /**\r
66                         * Destructor of NSMessage.\r
67                         */\r
68                 ~NSMessage() = default;\r
69 \r
70                 /**\r
71                      * This method is for getting Message Id from the Notification service Message.\r
72                      *\r
73                      * @return Id as uint64_t.\r
74                      */\r
75                 uint64_t getMessageId() const;\r
76 \r
77                 /**\r
78                      * This method is for getting Provider Id from the Notification service Message.\r
79                      *\r
80                      * @return Id as string.\r
81                      */\r
82                 std::string getProviderId() const;\r
83 \r
84                 /**\r
85                      * This method is for getting type from the Notification service Message.\r
86                      *\r
87                      * @return type as NSMessageType.\r
88                      */\r
89                 NSMessageType getType() const;\r
90 \r
91                 /**\r
92                      * This method is for setting type from the Notification service Message.\r
93                      *\r
94                      * @param type as NSMessageType.\r
95                      */\r
96                 void setType(const NSMessageType &type);\r
97 \r
98                 /**\r
99                      * This method is for getting time from the Notification service Message.\r
100                      *\r
101                      * @return time as string.\r
102                      */\r
103                 std::string getTime() const;\r
104 \r
105                 /**\r
106                      * This method is for setting time from the Notification service Message.\r
107                      *\r
108                      * @param time as string.\r
109                      */\r
110                 void setTime(const std::string &time);\r
111 \r
112                 /**\r
113                      * This method is for getting time to live from the Notification service Message.\r
114                      *\r
115                      * @return ttl as uint64_t.\r
116                      */\r
117                 uint64_t getTTL() const;\r
118 \r
119                 /**\r
120                      * This method is for setting time to live from the Notification service Message.\r
121                      *\r
122                      * @param ttl as uint64_t.\r
123                      */\r
124                 void setTTL(const uint64_t &ttl);\r
125 \r
126                 /**\r
127                      * This method is for getting Title from the Notification service Message.\r
128                      *\r
129                      * @return Title as string.\r
130                      */\r
131                 std::string getTitle() const;\r
132 \r
133                 /**\r
134                      * This method is for setting Title from the Notification service Message.\r
135                      *\r
136                      * @param Title as string.\r
137                      */\r
138                 void setTitle(const std::string &title);\r
139 \r
140                 /**\r
141                      * This method is for getting contentText from the Notification service Message.\r
142                      *\r
143                      * @return contentText as string.\r
144                      */\r
145                 std::string getContentText() const;\r
146 \r
147                 /**\r
148                      * This method is for setting contentText from the Notification service Message.\r
149                      *\r
150                      * @param contentText as string.\r
151                      */\r
152                 void setContentText(const std::string &contextText);\r
153 \r
154                 /**\r
155                      * This method is for getting sourceName from the Notification service Message.\r
156                      *\r
157                      * @return sourceName as string.\r
158                      */\r
159                 std::string getSourceName() const;\r
160 \r
161                 /**\r
162                      * This method is for setting sourceName from the Notification service Message.\r
163                      *\r
164                      * @param sourceName as string.\r
165                      */\r
166                 void setSourceName(const std::string &sourceName);\r
167 \r
168                 /**\r
169                      * This method is for getting mediaContents from the Notification service Message.\r
170                      *\r
171                      * @return mediaContents as NSMediaContents pointer.\r
172                      */\r
173                 NSMediaContents *getMediaContents() const;\r
174 \r
175                 /**\r
176                      * This method is for setting mediaContents from the Notification service Message.\r
177                      *\r
178                      * @param mediaContents as NSMediaContents pointer.\r
179                      */\r
180                 void setMediaContents(NSMediaContents *mediaContents);\r
181 \r
182 \r
183             private:\r
184                 uint64_t m_messageId;\r
185                 std::string m_providerId;\r
186 \r
187                 NSMessageType m_type;\r
188                 std::string m_time;\r
189                 uint64_t m_ttl;\r
190                 std::string m_title;\r
191                 std::string m_contentText;\r
192                 std::string m_sourceName;\r
193                 NSMediaContents *m_mediaContents;\r
194 \r
195         };\r
196     }\r
197 }\r
198 #endif /* _NS_MESSAGE_H_ */\r