1 //******************************************************************
3 // Copyright 2014 Intel Corporation.
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
7 // Licensed under the Apache License, Version 2.0 (the "License");
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
11 // http://www.apache.org/licenses/LICENSE-2.0
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an "AS IS" BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
22 #include "OCPlatform.h"
25 namespace PH = std::placeholders;
27 MiddleServer *serverObject = nullptr; // to be filled in by object
29 MiddleServer::MiddleServer()
31 cb = std::bind(&MiddleServer::entityHandler, this, std::placeholders::_1);
35 bool MiddleServer::init() {
39 OCEntityHandlerResult MiddleServer::entityHandler(const std::shared_ptr<OCResourceRequest> request) {
44 std::string requestType = request->getRequestType();
45 int requestFlag = request->getRequestHandlerFlag();
46 bool responseNeeded = false;
48 if (requestFlag && RequestHandlerFlag::RequestFlag) {
49 if (requestType == "PUT") {
50 responseNeeded = true;
51 } else if (requestType == "GET") {
52 responseNeeded = true;
53 } else if (requestType == "POST") { // handle post requests here
54 } else if (requestType == "DELETE") { // handle delete requests here
58 if (requestFlag && RequestHandlerFlag::ObserverFlag) {
62 auto response = std::make_shared<OC::OCResourceResponse>();
63 response->setRequestHandle(request->getRequestHandle());
64 response->setResourceHandle(request->getResourceHandle());
65 response->setErrorCode(200);
66 response->setResponseResult(OC_EH_OK);
67 if (OC_STACK_OK != OCPlatform::sendResponse(response)) {
74 // for debug purposes - to see if the result of registerResource is valid or not
75 void MiddleServer::printRegisterResourceResult(OCStackResult &result) {
78 cout << "OC_STACK_OK\n";
80 case OC_STACK_INVALID_URI:
81 cout << "OC_STACK_INVALID_URI\n";
83 case OC_STACK_INVALID_QUERY:
84 cout << "OC_STACK_INVALID_QUERY\n";
86 case OC_STACK_INVALID_IP:
87 cout << "OC_STACK_INVALID_IP\n";
89 case OC_STACK_INVALID_PORT:
90 cout << "OC_STACK_INVALID_PORT\n";
92 case OC_STACK_INVALID_CALLBACK:
93 cout << "OC_STACK_INVALID_CALLBACK\n";
95 case OC_STACK_INVALID_METHOD:
96 cout << "OC_STACK_INVALID_METHOD\n";
98 case OC_STACK_NO_MEMORY:
99 cout << "OC_STACK_NO_MEMORY\n";
101 case OC_STACK_COMM_ERROR:
102 cout << "OC_STACK_COMM_ERROR\n";
104 case OC_STACK_INVALID_PARAM:
105 cout << "OC_STACK_INVALID_PARAM\n";
107 case OC_STACK_NOTIMPL:
108 cout << "OC_STACK_NOTIMPL\n";
110 case OC_STACK_NO_RESOURCE:
111 cout << "OC_STACK_NO_RESOURCE\n";
113 case OC_STACK_RESOURCE_ERROR:
114 cout << "OC_STACK_RESOURCE_ERROR\n";
116 case OC_STACK_SLOW_RESOURCE:
117 cout << "OC_STACK_SLOW_RESOURCE\n";
119 case OC_STACK_NO_OBSERVERS:
120 cout << "OC_STACK_NO_OBSERVERS\n";
123 cout << "OC_STACK_ERROR\n";
131 bool MiddleServer::registerResource(std::string & resourceUrl, const std::string& resourceTypeName, const std::string& resourceInterface)
133 OCResourceHandle resourceHandle;
134 // OCResourceProperty is defined ocstack.h
135 uint8_t resourceProperty = OC_DISCOVERABLE | OC_OBSERVABLE;
137 //uncomment to enable debugging
139 // This will internally create and register the resource.
140 OCStackResult result = OC::OCPlatform::registerResource(
141 resourceHandle, resourceUrl, resourceTypeName,
145 // enable this to see the result of registerResource
146 //printRegisterResourceResult_(result);
147 if (result != OC_STACK_OK) {