X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=resource%2Fsrc%2FInProcServerWrapper.cpp;h=a25839f979837c2e8fddebb4086f7567fca6d39d;hb=966700a71110e415e8d3049cbe59c624929a9dff;hp=d60f613de56d13593c1bfc213d99e4466a5a7a87;hpb=a31834d16272a5b8d3382fb2959676804157c732;p=platform%2Fupstream%2Fiotivity.git diff --git a/resource/src/InProcServerWrapper.cpp b/resource/src/InProcServerWrapper.cpp index d60f613..a25839f 100644 --- a/resource/src/InProcServerWrapper.cpp +++ b/resource/src/InProcServerWrapper.cpp @@ -33,6 +33,7 @@ #include #include #include +#include #include #include @@ -54,12 +55,10 @@ void formResourceRequest(OCEntityHandlerFlag flag, OCEntityHandlerRequest * entityHandlerRequest, std::shared_ptr pRequest) { - pRequest->setRequestHandle(entityHandlerRequest->requestHandle); - pRequest->setResourceHandle(entityHandlerRequest->resource); - - if(flag & OC_INIT_FLAG) + if(pRequest && entityHandlerRequest) { - pRequest->setRequestHandlerFlag(OC::RequestHandlerFlag::InitFlag); + pRequest->setRequestHandle(entityHandlerRequest->requestHandle); + pRequest->setResourceHandle(entityHandlerRequest->resource); } if(flag & OC_REQUEST_FLAG) @@ -70,9 +69,8 @@ void formResourceRequest(OCEntityHandlerFlag flag, { if(entityHandlerRequest->query) { - std::string querystr(reinterpret_cast(entityHandlerRequest->query)); - - OC::Utilities::QueryParamsKeyVal qp = OC::Utilities::getQueryParams(querystr); + OC::Utilities::QueryParamsKeyVal qp = OC::Utilities::getQueryParams( + entityHandlerRequest->query); if(qp.size() > 0) { @@ -106,14 +104,12 @@ void formResourceRequest(OCEntityHandlerFlag flag, else if(OC_REST_PUT == entityHandlerRequest->method) { pRequest->setRequestType(OC::PlatformCommands::PUT); - pRequest->setPayload(std::string(reinterpret_cast - (entityHandlerRequest->reqJSONPayload))); + pRequest->setPayload(entityHandlerRequest->payload); } else if(OC_REST_POST == entityHandlerRequest->method) { pRequest->setRequestType(OC::PlatformCommands::POST); - pRequest->setPayload(std::string(reinterpret_cast - (entityHandlerRequest->reqJSONPayload))); + pRequest->setPayload(entityHandlerRequest->payload); } else if(OC_REST_DELETE == entityHandlerRequest->method) { @@ -139,7 +135,8 @@ void formResourceRequest(OCEntityHandlerFlag flag, OCEntityHandlerResult DefaultEntityHandlerWrapper(OCEntityHandlerFlag flag, OCEntityHandlerRequest * entityHandlerRequest, - char* uri) + char* uri, + void * /*callbackParam*/) { OCEntityHandlerResult result = OC_EH_ERROR; @@ -178,7 +175,8 @@ OCEntityHandlerResult DefaultEntityHandlerWrapper(OCEntityHandlerFlag flag, OCEntityHandlerResult EntityHandlerWrapper(OCEntityHandlerFlag flag, - OCEntityHandlerRequest * entityHandlerRequest) + OCEntityHandlerRequest * entityHandlerRequest, + void* /*callbackParam*/) { OCEntityHandlerResult result = OC_EH_ERROR; @@ -259,13 +257,21 @@ namespace OC { initType = OC_CLIENT_SERVER; } + else if (cfg.mode == ModeType::Gateway) + { + initType = OC_GATEWAY; + } else { throw InitializeException(OC::InitException::NOT_CONFIGURED_AS_SERVER, - OC_STACK_INVALID_PARAM); + OC_STACK_INVALID_PARAM); } - OCStackResult result = OCInit(cfg.ipAddress.c_str(), cfg.port, initType); + OCTransportFlags serverFlags = + static_cast(cfg.serverConnectivity & CT_MASK_FLAGS); + OCTransportFlags clientFlags = + static_cast(cfg.clientConnectivity & CT_MASK_FLAGS); + OCStackResult result = OCInit1(initType, serverFlags, clientFlags); if(OC_STACK_OK != result) { @@ -288,9 +294,11 @@ namespace OC result = OCProcess(); } - // ...the value of variable result is simply ignored for now. if(OC_STACK_ERROR == result) - ; + { + oclog() << "OCProcess failed with result " << result < lock(*cLock); + result = OCSetPlatformInfo(platformInfo); + } + return result; + } + OCStackResult InProcServerWrapper::registerResource( OCResourceHandle& resourceHandle, std::string& resourceURI, @@ -332,6 +352,7 @@ namespace OC resourceInterface.c_str(), //const char * resourceInterfaceName //TODO fix this resourceURI.c_str(), // const char * uri EntityHandlerWrapper, // OCEntityHandler entityHandler + NULL, resourceProperties // uint8_t resourceProperties ); } @@ -342,6 +363,7 @@ namespace OC resourceInterface.c_str(), //const char * resourceInterfaceName //TODO fix this resourceURI.c_str(), // const char * uri NULL, // OCEntityHandler entityHandler + NULL, resourceProperties // uint8_t resourceProperties ); } @@ -365,65 +387,7 @@ namespace OC return result; } - OCStackResult InProcServerWrapper::registerResourceWithHost( - OCResourceHandle& resourceHandle, - std::string& resourceHOST, - std::string& resourceURI, - const std::string& resourceTypeName, - const std::string& resourceInterface, - EntityHandler& eHandler, - uint8_t resourceProperties) - - { - OCStackResult result = OC_STACK_ERROR; - auto cLock = m_csdkLock.lock(); - - if (cLock) - { - std::lock_guard < std::recursive_mutex > lock(*cLock); - - if (NULL != eHandler) - { - result = OCCreateResourceWithHost(&resourceHandle, // OCResourceHandle *handle - resourceTypeName.c_str(), // const char * resourceTypeName - resourceInterface.c_str(), //const char * resourceInterfaceName //TODO fix - resourceHOST.c_str(), // const char * host - (resourceHOST + resourceURI).c_str(), // const char * uri - EntityHandlerWrapper, // OCEntityHandler entityHandler - resourceProperties // uint8_t resourceProperties - ); - } - else - { - result = OCCreateResourceWithHost(&resourceHandle, // OCResourceHandle *handle - resourceTypeName.c_str(), // const char * resourceTypeName - resourceInterface.c_str(), //const char * resourceInterfaceName //TODO fix - resourceHOST.c_str(), // const char * host - (resourceHOST + resourceURI).c_str(), // const char * uri - nullptr, // OCEntityHandler entityHandler - resourceProperties // uint8_t resourceProperties - ); - } - - if (result != OC_STACK_OK) - { - resourceHandle = nullptr; - } - else - { - std::lock_guard lock(OC::details::serverWrapperLock); - OC::details::entityHandlerMap[resourceHandle] = eHandler; - OC::details::resourceUriMap[resourceHandle] = resourceURI; - } - } - else - { - result = OC_STACK_ERROR; - } - - return result; - } OCStackResult InProcServerWrapper::setDefaultDeviceEntityHandler (EntityHandler entityHandler) @@ -437,12 +401,12 @@ namespace OC if(entityHandler) { - result = OCSetDefaultDeviceEntityHandler(DefaultEntityHandlerWrapper); + result = OCSetDefaultDeviceEntityHandler(DefaultEntityHandlerWrapper, NULL); } else { // If Null passed we unset - result = OCSetDefaultDeviceEntityHandler(NULL); + result = OCSetDefaultDeviceEntityHandler(NULL, NULL); } return result; @@ -570,17 +534,15 @@ namespace OC else { OCEntityHandlerResponse response; - std::string payLoad; - HeaderOptions serverHeaderOptions; - - payLoad = pResponse->getPayload(); - serverHeaderOptions = pResponse->getHeaderOptions(); +// OCRepPayload* payLoad = pResponse->getPayload(); + HeaderOptions serverHeaderOptions = pResponse->getHeaderOptions(); response.requestHandle = pResponse->getRequestHandle(); response.resourceHandle = pResponse->getResourceHandle(); response.ehResult = pResponse->getResponseResult(); - response.payload = (unsigned char*) payLoad.c_str(); - response.payloadSize = payLoad.length() + 1; + + response.payload = reinterpret_cast(pResponse->getPayload()); + response.persistentBufferFlag = 0; response.numSendVendorSpecificHeaderOptions = serverHeaderOptions.size(); @@ -592,18 +554,20 @@ namespace OC static_cast(it->getOptionID()); response.sendVendorSpecificHeaderOptions[i].optionLength = (it->getOptionData()).length() + 1; - memcpy(response.sendVendorSpecificHeaderOptions[i].optionData, - (it->getOptionData()).c_str(), - (it->getOptionData()).length() + 1); + std::string optionData = it->getOptionData(); + std::copy(optionData.begin(), + optionData.end(), + response.sendVendorSpecificHeaderOptions[i].optionData); + response.sendVendorSpecificHeaderOptions[i].optionData[it->getOptionData().length()] + = '\0'; i++; } if(OC_EH_RESOURCE_CREATED == response.ehResult) { - std::string createdUri = pResponse->getNewResourceUri(); - strncpy(reinterpret_cast(response.resourceUri), - createdUri.c_str(), - createdUri.length() + 1); + pResponse->getNewResourceUri().copy(response.resourceUri, + sizeof (response.resourceUri) - 1); + response.resourceUri[pResponse->getNewResourceUri().length()] = '\0'; } if(cLock) @@ -613,6 +577,7 @@ namespace OC } else { + OICFree(response.payload); result = OC_STACK_ERROR; } @@ -635,3 +600,4 @@ namespace OC OCStop(); } } +