+}
+
+RAML::ActionType SimulatorSingleResourceImpl::getActionType(std::string requestType)
+{
+ if (!requestType.compare("GET"))
+ return RAML::ActionType::GET;
+
+ if (!requestType.compare("PUT"))
+ return RAML::ActionType::PUT;
+
+ if (!requestType.compare("POST"))
+ return RAML::ActionType::POST;
+
+ if (!requestType.compare("DELETE"))
+ return RAML::ActionType::DELETE;
+
+ return RAML::ActionType::NONE;
+}
+
+OCEntityHandlerResult SimulatorSingleResourceImpl::sendErrorResponse
+ (std::shared_ptr<OC::OCResourceRequest> request, const int errCode,
+ OCEntityHandlerResult responseCode)
+{
+ std::shared_ptr<OC::OCResourceResponse> response;
+
+ response = std::make_shared<OC::OCResourceResponse>();
+ response->setErrorCode(errCode);
+ response->setResponseResult(responseCode);
+
+ // Setting error response body as representation in response if available in RAML file
+ if ("PUT" == request->getRequestType())
+ {
+ if (!m_putErrorResModel.getOCRepresentation().empty())
+ response->setResourceRepresentation(m_putErrorResModel.getOCRepresentation());
+ }
+
+ if ("POST" == request->getRequestType())
+ {
+ if (!m_postErrorResModel.getOCRepresentation().empty())
+ response->setResourceRepresentation(m_postErrorResModel.getOCRepresentation());
+ }
+
+ response->setRequestHandle(request->getRequestHandle());
+ response->setResourceHandle(request->getResourceHandle());
+ if (OC_STACK_OK != OC::OCPlatform::sendResponse(response))
+ return OC_EH_ERROR;
+
+ return OC_EH_OK;
+}
+
+std::shared_ptr<OC::OCResourceResponse> SimulatorSingleResourceImpl::handleReadRequest
+ (std::shared_ptr<OC::OCResourceRequest> request, const std::string &interfaceType)
+{
+ std::shared_ptr<OC::OCResourceResponse> response;
+ OC::OCRepresentation ocRep;
+
+ response = std::make_shared<OC::OCResourceResponse>();
+ response->setErrorCode(200);
+ response->setResponseResult(OC_EH_OK);
+
+ if (OC::ACTUATOR_INTERFACE == interfaceType ||
+ OC::SENSOR_INTERFACE == interfaceType)
+ {
+ // Only send the representation without the common properties.
+ ocRep = m_resModel.getOCRepresentation();
+ response->setResourceRepresentation(ocRep, interfaceType);
+ }
+ else
+ {
+ // Send the representation along with common properties for the resource.
+ SimulatorResourceModel resModel = m_resModel;
+ setCommonProperties(resModel);
+ ocRep = resModel.getOCRepresentation();
+ response->setResourceRepresentation(ocRep, interfaceType);
+ }
+
+ std::string resPayload = getPayloadString(ocRep);
+ SIM_LOG(ILogger::INFO, "[" << m_uri <<
+ "] Sending response for GET request. \n**Payload details**" << resPayload)
+
+ return response;
+}
+
+std::shared_ptr<OC::OCResourceResponse> SimulatorSingleResourceImpl::handleWriteRequest
+ (std::shared_ptr<OC::OCResourceRequest> request, const std::string &interfaceType)
+{
+ std::shared_ptr<OC::OCResourceResponse> response;
+ OC::OCRepresentation requestRep = request->getResourceRepresentation();
+ SimulatorResourceModel resModel;
+ if (true == updateResourceModel(requestRep, resModel))
+ {
+ notifyAll(resModel);
+ notifyApp(resModel);
+
+ response = std::make_shared<OC::OCResourceResponse>();
+ response->setErrorCode(200);
+ response->setResponseResult(OC_EH_OK);
+ response->setResourceRepresentation(resModel.getOCRepresentation(), interfaceType);
+ std::string resPayload = getPayloadString(resModel.getOCRepresentation());
+ SIM_LOG(ILogger::INFO, "[" << m_uri <<
+ "] Sending response for " << request->getRequestType() << " request. \n**Payload details**" <<
+ resPayload)
+ }
+ else
+ {
+ sendErrorResponse(request, 400, OC_EH_ERROR);
+ }
+
+ return response;
+}
+
+void SimulatorSingleResourceImpl::setCommonProperties(SimulatorResourceModel &resModel)
+{
+ resModel.add("rt", m_resourceType);
+ resModel.add("if", m_interfaces);
+ resModel.add("p", m_property);
+ resModel.add("n", m_name);