return desc;
}
-// Prettyprinter for AttributeMaps:
+// Prettyprinters:
std::ostream& operator<<(std::ostream& os, const OC::AttributeMap& attrs)
{
for(const auto& attr : attrs)
// Callbacks (note that the signature after binding will match exactly:
private:
void onFoundResource(std::shared_ptr<OC::OCResource> in_resource);
- void onResourceGet(OC::AttributeMap attr_map, const int error_code);
- void onResourcePut(OC::AttributeMap attribute_map, const int error_code);
- void onObserve(const OC::AttributeMap attribute_map, const int error_code, const int& sequence_number);
+ void onResourceGet(OC::OCRepresentation rep, const int error_code);
+ void onResourcePut(const OC::OCRepresentation rep, const int error_code);
+ void onObserve(const OC::OCRepresentation rep, const int error_code, const int& sequence_number);
};
class resource_handler
call_timer.report_and_reset("find_resources");
- // Now, fixup our own representation:
+ // Now, fixup our own representation ptr:
resource = in_resource;
/* Note: You can combine the host and URI to get a unique identifier, for
call_timer.mark("get_resource");
- resource->get(std::bind(&resource_handle::onResourceGet, this,
- std::placeholders::_1, std::placeholders::_2));
+ OC::QueryParamsMap qpm;
+
+ resource->get(qpm, std::bind(&resource_handle::onResourceGet, this,
+ std::placeholders::_1, std::placeholders::_2));
}
catch(OC::OCException& e)
{
}
}
-void resource_handle::onResourceGet(const OC::AttributeMap attr_map, const int error_code)
+void resource_handle::onResourceGet(const OC::OCRepresentation rep, const int error_code)
{
using std::cout;
return;
}
- std::cout << attr_map << '\n';
+ std::cout << "input attributes:\n" << rep.getAttributeMap() << '\n';
// Now, make a change to the light representation (replacing, rather than parsing):
OC::AttributeMap attrs {
{ "power", { "10" } }
};
+ std::cout << "output attributes:\n" << attrs << '\n';
+
call_timer.mark("put_resource");
- resource->put(attrs, OC::QueryParamsMap(),
+ OC::OCRepresentation out_rep;
+ out_rep.setAttributeMap(attrs);
+
+ resource->put(out_rep, OC::QueryParamsMap(),
std::bind(&resource_handle::onResourcePut, this, std::placeholders::_1, std::placeholders::_2));
}
-void resource_handle::onResourcePut(const OC::AttributeMap attribute_map, const int error_code)
+void resource_handle::onResourcePut(const OC::OCRepresentation rep, const int error_code)
{
std::cout << "onResourcePut():\n";
throw OC::OCException(os.str());
}
- std::cout << attribute_map << '\n';
+ std::cout << "input attributes:\n" << rep.getAttributeMap() << '\n';
call_timer.mark("observe_resource");
// Start an observer:
- resource->observe(OC::ObserveType::Observe,
+ resource->observe(OC::ObserveType::Observe, OC::QueryParamsMap(),
std::bind(&resource_handle::onObserve, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));
}
-void resource_handle::onObserve(const OC::AttributeMap attribute_map, const int error_code, const int& sequence_number)
+void resource_handle::onObserve(const OC::OCRepresentation rep, const int error_code, const int& sequence_number)
{
if(0 != error_code)
{
call_timer.report_and_reset("observe_resource");
- std::cout << attribute_map << '\n';
+ std::cout << rep.getAttributeMap() << '\n';
const auto oc = observe_count();
void LightResource::handle_put_request(std::shared_ptr<OCResourceRequest> request, std::shared_ptr<OCResourceResponse> response)
{
+ // Here's how you would get any query parameters:
const auto query_params_map = request->getQueryParameters();
+ // ...do something with the query parameters (if there were any)...
- // ...do something with the query parameters...
-
- auto attribute_map = request->getResourceRepresentation();
+ auto attribute_map = request->getAttributeRepresentation();
setRepresentation(attribute_map);
+ getRepresentation(attribute_map); // in case we changed something
- getRepresentation(attribute_map);
+ if(!response)
+ return;
response->setErrorCode(200);
response->setResourceRepresentation(attribute_map);
// ...demo-code...
response->setErrorCode(200);
- auto attribute_map = request->getResourceRepresentation();
+ auto attribute_map = request->getAttributeRepresentation();
getRepresentation(attribute_map);
response->setResourceRepresentation(attribute_map);
}
// ...demo-code...
response->setErrorCode(200);
- auto attribute_map = request->getResourceRepresentation();
+ auto attribute_map = request->getAttributeRepresentation();
getRepresentation(attribute_map);
response->setResourceRepresentation(attribute_map);
}
roomclient: OCLib.a examples/roomclient.cpp
$(CXX) $(CXX_FLAGS.$(BUILD)) -o $(SAMPLES_OUT_DIR)/$@ examples/roomclient.cpp $(CXX_INC) $(OBJ_DIR)/OCLib.a csdk/$(BUILD)/liboctbstack.a
-OCLib.a: OCPlatform.o OCResource.o OCReflect.o OCUtilities.o InProcServerWrapper.o InProcClientWrapper.o
- ar -cvq $(OBJ_DIR)/OCLib.a $(OBJ_DIR)/OCPlatform.o $(OBJ_DIR)/OCResource.o $(OBJ_DIR)/OCReflect.o $(OBJ_DIR)/OCUtilities.o $(OBJ_DIR)/InProcServerWrapper.o $(OBJ_DIR)/InProcClientWrapper.o
+OCLib.a: OCPlatform.o OCResource.o OCReflect.o OCUtilities.o OCProperties.o InProcServerWrapper.o InProcClientWrapper.o
+ ar -cvq $(OBJ_DIR)/OCLib.a $(OBJ_DIR)/OCPlatform.o $(OBJ_DIR)/OCResource.o $(OBJ_DIR)/OCProperties.o $(OBJ_DIR)/OCReflect.o $(OBJ_DIR)/OCUtilities.o $(OBJ_DIR)/InProcServerWrapper.o $(OBJ_DIR)/InProcClientWrapper.o
OCReflect.o: OCLib/OCReflect.cpp
$(CXX) $(CXX_FLAGS.$(BUILD)) -o $(OBJ_DIR)/$@ -c OCLib/OCReflect.cpp $(CXX_INC)
OCResource.o: OCLib/OCResource.cpp
$(CXX) $(CXX_FLAGS.$(BUILD)) -o $(OBJ_DIR)/$@ -c OCLib/OCResource.cpp $(CXX_INC)
+OCProperties.o: OCLib/OCProperties.cpp
+ $(CXX) $(CXX_FLAGS.$(BUILD)) -o $(OBJ_DIR)/$@ -c OCLib/OCProperties.cpp $(CXX_INC)
+
OCUtilities.o: OCLib/OCUtilities.cpp
$(CXX) $(CXX_FLAGS.$(BUILD)) -o $(OBJ_DIR)/$@ -c OCLib/OCUtilities.cpp $(CXX_INC)