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) >
56 * A Mapping information about each scene values.
63 RCSResourceAttributes::Value val)
64 :sceneName(scene), key(keyName), value(val) { }
65 MappingInfo(MappingInfo &&) = default;
66 MappingInfo(const MappingInfo &) = default;
67 std::string sceneName; ///< name of scene value
68 std::string key; ///< key to set at attributes of remote resource
69 RCSResourceAttributes::Value value; ///< val to set at attributes of remote resource
72 ~SceneMemberResource() = default;
75 * Register a Scene member resource and return a SceneMemberResourceObject
76 * using link information of remote resource.
78 * @param attrs information to make scene member resource
80 static SceneMemberResource::Ptr
81 createSceneMemberResource(RCSResourceAttributes && attrs);
86 static SceneMemberResource::Ptr
87 createSceneMemberResource(const RCSResourceAttributes &);
90 * Register a Scene member resource and returns a SceneMemberResourceObject
91 * using information of RCSRemoteResourceObject.
93 * @param remoteObj information to make scene member resource
95 static SceneMemberResource::Ptr
96 createSceneMemberResource(RCSRemoteResourceObject::Ptr remoteObj);
99 * Add Scene mapping information at scene member resource.
103 void addMappingInfo(MappingInfo && mappingInfo);
108 void addMappingInfo(const MappingInfo &);
111 * Returns all Mapping information of a scene member resource.
113 std::vector<MappingInfo> getMappingInfo();
116 * Returns ID of a Scene member resource.
118 std::string getId() const;
121 * Returns Uri of a Scene member resource. (e.g. coap://192.168.0.2.1:12345/SceneMember)
123 std::string getFullUri() const;
126 * Returns RCSRemoteResourceObject about Scene member resource
128 RCSRemoteResourceObject::Ptr getRemoteResourceObject() const;
131 * Returns RCSResourceObject of Scene member resource
133 RCSResourceObject::Ptr getRCSResourceObject() const;
136 * Execute of Scene Action (with callback for response).
138 * @param sceneValue scene value to execute
139 * @param cb callback to response
141 void execute(std::string && sceneValue, executeCallback cb);
146 void execute(const std::string &, executeCallback);
149 * Execute of Scene Action (without callback for response).
151 * @param sceneValue scene value to execute
153 void execute(std::string && sceneValue);
158 void execute(const std::string &);
161 class SceneMemberRequestHandler
164 SceneMemberRequestHandler() = default;
165 ~SceneMemberRequestHandler() = default;
167 std::weak_ptr<SceneMemberResource> m_Owner;
169 RCSSetResponse onSetRequest(const RCSRequest & , RCSResourceAttributes &);
173 RCSResourceObject::Ptr m_SceneMemberResourceObj;
174 RCSRemoteResourceObject::Ptr m_RemoteMemberObj;
175 SceneMemberRequestHandler m_RequestHandler;
177 SceneMemberResource() = default;
179 SceneMemberResource(const SceneMemberResource &) = delete;
180 SceneMemberResource & operator = (const SceneMemberResource &) = delete;
182 SceneMemberResource(SceneMemberResource &&) = delete;
183 SceneMemberResource && operator = (SceneMemberResource &&) = delete;
188 #endif // SCENE_MEMBER_RESOURCE_OBJECT_H