OCStackResult HandleKeepAliveGETRequest(const CAEndpoint_t* endPoint, const CARequestInfo_t* requestInfo) { VERIFY_NON_NULL(endPoint, FATAL, OC_STACK_INVALID_PARAM); VERIFY_NON_NULL(requestInfo, FATAL, OC_STACK_INVALID_PARAM); OIC_LOG_V(DEBUG, TAG, "Find Ping resource [%s]", requestInfo->info.resourceUri); CAResponseResult_t result = CA_CONTENT; OCResource *resourcePtr = FindResourceByUri(requestInfo->info.resourceUri); if (!resourcePtr) { // Resource URL not specified OIC_LOG_V(DEBUG, TAG, "There is no Ping resource [%s]", requestInfo->info.resourceUri); result = CA_NOT_FOUND; } SendDirectStackResponse(endPoint, requestInfo->info.messageId, result, requestInfo->info.type, requestInfo->info.numOptions, requestInfo->info.options, requestInfo->info.token, requestInfo->info.tokenLength, requestInfo->info.resourceUri); return OC_STACK_OK; }
OCStackResult DetermineResourceHandling (const OCServerRequest *request, ResourceHandling *handling, OCResource **resource) { if(!request || !handling || !resource) { return OC_STACK_INVALID_PARAM; } OC_LOG_V(INFO, TAG, "DetermineResourceHandling for %s", request->resourceUrl); // Check if virtual resource if (GetTypeOfVirtualURI(request->resourceUrl) != OC_UNKNOWN_URI) { OC_LOG_V (INFO, TAG, "%s is virtual", request->resourceUrl); *handling = OC_RESOURCE_VIRTUAL; *resource = headResource; return OC_STACK_OK; } if (strlen((const char*)(request->resourceUrl)) == 0) { // Resource URL not specified *handling = OC_RESOURCE_NOT_SPECIFIED; return OC_STACK_NO_RESOURCE; } else { OCResource *resourcePtr = FindResourceByUri((const char*)request->resourceUrl); *resource = resourcePtr; if (!resourcePtr) { if(defaultDeviceHandler) { *handling = OC_RESOURCE_DEFAULT_DEVICE_ENTITYHANDLER; return OC_STACK_OK; } // Resource does not exist // and default device handler does not exist *handling = OC_RESOURCE_NOT_SPECIFIED; return OC_STACK_NO_RESOURCE; } if (IsCollectionResource (resourcePtr)) { // Collection resource if (resourcePtr->entityHandler != defaultResourceEHandler) { *handling = OC_RESOURCE_COLLECTION_WITH_ENTITYHANDLER; return OC_STACK_OK; } else { *handling = OC_RESOURCE_COLLECTION_DEFAULT_ENTITYHANDLER; return OC_STACK_OK; } } else { // Resource not a collection if (resourcePtr->entityHandler != defaultResourceEHandler) { *handling = OC_RESOURCE_NOT_COLLECTION_WITH_ENTITYHANDLER; return OC_STACK_OK; } else { *handling = OC_RESOURCE_NOT_COLLECTION_DEFAULT_ENTITYHANDLER; return OC_STACK_OK; } } } }