1 //******************************************************************
3 // Copyright 2016 Samsung Electronics All Rights Reserved.
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
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
11 // http://www.apache.org/licenses/LICENSE-2.0
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.
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
24 * This file contains the declaration of classes and its members related to SceneMemberResrouceObject
27 #ifndef SCENE_MEMBER_RESOURCE_OBJECT_H
28 #define SCENE_MEMBER_RESOURCE_OBJECT_H
30 #include "RCSResourceObject.h"
31 #include "RCSRemoteResourceObject.h"
32 #include "SceneCommons.h"
38 class SceneMemberResource
39 : public std::enable_shared_from_this<SceneMemberResource>
42 typedef std::shared_ptr< SceneMemberResource > Ptr;
45 * Callback definition to be invoked when the response of setRemoteAttribitues is received.
47 * @param attrs the result attributes
48 * @param eCode the error code received from the resource
50 * @see RCSRemoteResourceObject::setRemoteAttributes
52 typedef std::function< void(const RCSResourceAttributes & attrs, int eCode) >
53 MemberexecuteCallback;
56 * A Mapping information about each scene values.
61 const std::string & scene,
62 const std::string & keyName,
63 const RCSResourceAttributes::Value & val)
64 :sceneName(scene), key(keyName), value(val) { }
66 MappingInfo(MappingInfo &&) = default;
67 MappingInfo(const MappingInfo &) = default;
69 static MappingInfo create(const RCSResourceAttributes &);
71 std::string sceneName; ///< name of scene value
72 std::string key; ///< key to set at attributes of remote resource
73 RCSResourceAttributes::Value value; ///< val to set at attributes of remote resource
76 ~SceneMemberResource() = default;
79 * Register a Scene member resource and return a SceneMemberResourceObject
80 * using link information of remote resource.
82 * @param attrs information to make scene member resource
84 static SceneMemberResource::Ptr
85 createSceneMemberResource(RCSResourceAttributes && attrs);
90 static SceneMemberResource::Ptr
91 createSceneMemberResource(const RCSResourceAttributes &);
94 * Register a Scene member resource and returns a SceneMemberResourceObject
95 * using information of RCSRemoteResourceObject.
97 * @param remoteObj information to make scene member resource
99 static SceneMemberResource::Ptr
100 createSceneMemberResource(RCSRemoteResourceObject::Ptr remoteObj);
103 * Add Scene mapping information at scene member resource.
107 void addMappingInfo(MappingInfo && mappingInfo);
112 void addMappingInfo(const MappingInfo &);
115 * Returns all Mapping information of a scene member resource.
117 std::vector<MappingInfo> getMappingInfos() const;
119 std::vector<MappingInfo> findMappingInfos(const std::string & sceneValue) const;
121 bool hasSceneValue(const std::string &) const;
124 * Returns ID of a Scene member resource.
126 std::string getId() const;
129 * Returns Uri of a Scene member resource. (e.g. coap://192.168.0.2.1:12345/SceneMember)
131 std::string getFullUri() const;
134 * Returns Uri of a Target resource of scene member. (e.g. coap://192.168.0.2.1:12345/light)
136 std::string getTargetUri() const;
139 * Returns RCSRemoteResourceObject about Scene member resource
141 RCSRemoteResourceObject::Ptr getRemoteResourceObject() const;
144 * Returns RCSResourceObject of Scene member resource
146 RCSResourceObject::Ptr getRCSResourceObject() const;
149 * Execute of Scene Action (with callback for response).
151 * @param sceneValue scene value to execute
152 * @param cb callback to response
154 void execute(std::string && sceneValue, MemberexecuteCallback cb);
159 void execute(const std::string &, MemberexecuteCallback);
162 * Execute of Scene Action (without callback for response).
164 * @param sceneValue scene value to execute
166 void execute(std::string && sceneValue);
171 void execute(const std::string &);
173 void setName(const std::string &);
174 void setName(std::string &&);
176 std::string getName() const;
179 class SceneMemberRequestHandler
182 SceneMemberRequestHandler() = default;
183 ~SceneMemberRequestHandler() = default;
185 std::weak_ptr<SceneMemberResource> m_owner;
187 RCSSetResponse onSetRequest(const RCSRequest & , RCSResourceAttributes &);
189 RCSSetResponse addMappingInfos(const RCSRequest & , RCSResourceAttributes &);
190 RCSSetResponse setSceneMemberName(const RCSRequest & , RCSResourceAttributes &);
194 RCSResourceObject::Ptr m_sceneMemberResourceObj;
195 RCSRemoteResourceObject::Ptr m_remoteMemberObj;
196 SceneMemberRequestHandler m_requestHandler;
198 SceneMemberResource() = default;
200 SceneMemberResource(const SceneMemberResource &) = delete;
201 SceneMemberResource & operator = (const SceneMemberResource &) = delete;
203 SceneMemberResource(SceneMemberResource &&) = delete;
204 SceneMemberResource & operator = (SceneMemberResource &&) = delete;
206 void createResourceObject();
207 void setDefaultAttributes();
208 void initSetRequestHandler();
213 #endif // SCENE_MEMBER_RESOURCE_OBJECT_H