[IoTivity Simulator] Handling resource interfaces.
[platform/upstream/iotivity.git] / service / simulator / src / server / simulator_single_resource_impl.h
index 6aa6a4a..a5c6c44 100755 (executable)
@@ -23,6 +23,7 @@
 
 #include "simulator_single_resource.h"
 #include "resource_update_automation_mngr.h"
+#include "RamlParser.h"
 
 class SimulatorResourceFactory;
 class SimulatorSingleResourceImpl : public SimulatorSingleResource
@@ -39,7 +40,10 @@ class SimulatorSingleResourceImpl : public SimulatorSingleResource
         void setName(const std::string &name);
         void setURI(const std::string &uri);
         void setResourceType(const std::string &resourceType);
-        void addInterface(std::string interfaceType);
+        void addInterface(const std::string &interfaceType);
+        void removeInterface(const std::string &interfaceType);
+        void addInterface(const std::vector<std::string> &interfaceList);
+        void removeInterface(const std::vector<std::string> &interfaceList);
         void setObservable(bool state);
         void setObserverCallback(ObserverCallback callback);
         bool isObservable();
@@ -74,22 +78,32 @@ class SimulatorSingleResourceImpl : public SimulatorSingleResource
         void setResourceModel(const SimulatorResourceModel &resModel);
         void setPutErrorResponseModel(const SimulatorResourceModel &resModel);
         void setPostErrorResponseModel(const SimulatorResourceModel &resModel);
+        void setActionType(std::map<RAML::ActionType, RAML::ActionPtr> &actionType);
+        RAML::ActionType getActionType(std::string requestType);
         void notifyApp();
         void notifyApp(SimulatorResourceModel &resModel);
 
     private:
         SimulatorSingleResourceImpl();
         OCEntityHandlerResult handleRequests(std::shared_ptr<OC::OCResourceRequest> request);
-        std::shared_ptr<OC::OCResourceResponse> requestOnBaseLineInterface(
-            std::shared_ptr<OC::OCResourceRequest> request);
-        void resourceModified();
+        std::shared_ptr<OC::OCResourceResponse> handleReadRequest(
+            std::shared_ptr<OC::OCResourceRequest> request, const std::string &interfaceType);
+        std::shared_ptr<OC::OCResourceResponse> handleWriteRequest(
+            std::shared_ptr<OC::OCResourceRequest> request, const std::string &interfaceType);
+        OCEntityHandlerResult sendErrorResponse(std::shared_ptr<OC::OCResourceRequest> request,
+            const int errCode, OCEntityHandlerResult responseCode);
+        void setCommonProperties(SimulatorResourceModel &resModel);
         bool updateResourceModel(OC::OCRepresentation &ocRep, SimulatorResourceModel &resModel);
+        void addObserver(OC::ObservationInfo ocObserverInfo);
+        void removeObserver(OC::ObservationInfo ocObserverInfo);
+        void removeAllObservers();
 
         SimulatorResource::Type m_type;
         std::string m_name;
         std::string m_uri;
         std::string m_resourceType;
         std::vector<std::string> m_interfaces;
+        std::map<std::string, std::vector<std::string>> m_requestTypes;
 
         std::recursive_mutex m_objectLock;
         std::mutex m_modelLock;
@@ -100,6 +114,7 @@ class SimulatorSingleResourceImpl : public SimulatorSingleResource
         ObserverCallback m_observeCallback;
         UpdateAutomationMngr m_updateAutomationMgr;
         std::vector<ObserverInfo> m_observersList;
+        std::map<RAML::ActionType , RAML::ActionPtr> m_actionTypes;
 
         OCResourceProperty m_property;
         OCResourceHandle m_resourceHandle;