X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=service%2Fresource-encapsulation%2Fsrc%2FserverBuilder%2Fsrc%2FRequestHandler.cpp;h=04967dc4f305806dfa3fc82f73cfe0f3a2956770;hb=390866079e285d2c74918432c0d597d5da52f8a0;hp=f1facbc2f5c3611c9a67d0ed84530b22d03dd08c;hpb=3e9402ad71cb3e93266a77796f44d17bab9853fd;p=platform%2Fupstream%2Fiotivity.git diff --git a/service/resource-encapsulation/src/serverBuilder/src/RequestHandler.cpp b/service/resource-encapsulation/src/serverBuilder/src/RequestHandler.cpp index f1facbc..04967dc 100644 --- a/service/resource-encapsulation/src/serverBuilder/src/RequestHandler.cpp +++ b/service/resource-encapsulation/src/serverBuilder/src/RequestHandler.cpp @@ -18,50 +18,16 @@ // //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -#include +#include "RequestHandler.h" -#include -#include -#include -#include - -#include +#include "ResourceAttributesConverter.h" +#include "RCSResourceObject.h" +#include "ResourceAttributesUtils.h" namespace { using namespace OIC::Service; - typedef std::function< OC::OCRepresentation(RCSResourceObject&) > OCRepresentationGetter; - - OC::OCRepresentation getOCRepresentationFromResource(RCSResourceObject& resource) - { - RCSResourceObject::LockGuard lock{ resource, RCSResourceObject::AutoNotifyPolicy::NEVER }; - return ResourceAttributesConverter::toOCRepresentation(resource.getAttributes()); - } - - OC::OCRepresentation getOCRepresentation(const RCSResourceAttributes& attrs) - { - return ResourceAttributesConverter::toOCRepresentation(attrs); - } - - template< typename T > - OCRepresentationGetter wrapGetOCRepresentation(T&& attrs) - { - return std::bind(getOCRepresentation, std::forward(attrs)); - } - - std::shared_ptr< OC::OCResourceResponse > doBuildResponse(RCSResourceObject& resource, - int errorCode, OCRepresentationGetter ocRepGetter) - { - auto response = std::make_shared< OC::OCResourceResponse >(); - - response->setResponseResult(OC_EH_OK); - response->setErrorCode(errorCode); - response->setResourceRepresentation(ocRepGetter(resource)); - - return response; - } - AttrKeyValuePairs applyAcceptMethod(RCSResourceObject& resource, const RCSResourceAttributes& requestAttrs) { @@ -117,35 +83,48 @@ namespace OIC constexpr int RequestHandler::DEFAULT_ERROR_CODE; RequestHandler::RequestHandler() : - m_holder{ std::bind(doBuildResponse, std::placeholders::_1, DEFAULT_ERROR_CODE, - getOCRepresentationFromResource) } + m_errorCode{ DEFAULT_ERROR_CODE }, + m_customRep{ false }, + m_ocRep{ } { } RequestHandler::RequestHandler(int errorCode) : - m_holder{ std::bind(doBuildResponse, std::placeholders::_1, errorCode, - getOCRepresentationFromResource) } + m_errorCode{ errorCode }, + m_customRep{ false }, + m_ocRep{ } + { } RequestHandler::RequestHandler(const RCSResourceAttributes& attrs, int errorCode) : - m_holder{ std::bind(doBuildResponse, std::placeholders::_1, errorCode, - wrapGetOCRepresentation(attrs)) } + m_errorCode{ errorCode }, + m_customRep{ true }, + m_ocRep{ ResourceAttributesConverter::toOCRepresentation(attrs) } { } RequestHandler::RequestHandler(RCSResourceAttributes&& attrs, int errorCode) : - m_holder{ std::bind(doBuildResponse, std::placeholders::_1, errorCode, - wrapGetOCRepresentation(std::move(attrs))) } + m_errorCode{ errorCode }, + m_customRep{ true }, + m_ocRep{ ResourceAttributesConverter::toOCRepresentation(std::move(attrs)) } { } - std::shared_ptr< OC::OCResourceResponse > RequestHandler::buildResponse( - RCSResourceObject& resource) + int RequestHandler::getErrorCode() const { - return m_holder(resource); + return m_errorCode; } + bool RequestHandler::hasCustomRepresentation() const + { + return m_customRep; + } + + OC::OCRepresentation RequestHandler::getRepresentation() const + { + return m_ocRep; + } SetRequestHandler::SetRequestHandler() : RequestHandler{ }