本文整理汇总了C++中HeaderOptions::push_back方法的典型用法代码示例。如果您正苦于以下问题:C++ HeaderOptions::push_back方法的具体用法?C++ HeaderOptions::push_back怎么用?C++ HeaderOptions::push_back使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类HeaderOptions
的用法示例。
在下文中一共展示了HeaderOptions::push_back方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: parseServerHeaderOptions
void parseServerHeaderOptions(OCClientResponse* clientResponse,
HeaderOptions& serverHeaderOptions)
{
if(clientResponse)
{
// Parse header options from server
uint16_t optionID;
std::string optionData;
for(int i = 0; i < clientResponse->numRcvdVendorSpecificHeaderOptions; i++)
{
optionID = clientResponse->rcvdVendorSpecificHeaderOptions[i].optionID;
optionData = reinterpret_cast<const char*>
(clientResponse->rcvdVendorSpecificHeaderOptions[i].optionData);
HeaderOption::OCHeaderOption headerOption(optionID, optionData);
serverHeaderOptions.push_back(headerOption);
}
}
else
{
// clientResponse is invalid
// TODO check proper logging
std::cout << " Invalid response " << std::endl;
}
}
示例2: formResourceRequest
void formResourceRequest(OCEntityHandlerFlag flag,
OCEntityHandlerRequest * entityHandlerRequest,
std::shared_ptr<OCResourceRequest> pRequest)
{
if(pRequest && entityHandlerRequest)
{
pRequest->setRequestHandle(entityHandlerRequest->requestHandle);
pRequest->setResourceHandle(entityHandlerRequest->resource);
pRequest->setMessageID(entityHandlerRequest->messageID);
}
if(flag & OC_REQUEST_FLAG)
{
pRequest->setRequestHandlerFlag(OC::RequestHandlerFlag::RequestFlag);
if(entityHandlerRequest)
{
if(entityHandlerRequest->query)
{
OC::Utilities::QueryParamsKeyVal qp = OC::Utilities::getQueryParams(
entityHandlerRequest->query);
if(qp.size() > 0)
{
pRequest->setQueryParams(qp);
}
}
if(entityHandlerRequest->numRcvdVendorSpecificHeaderOptions != 0)
{
//Set the header options here.
uint16_t optionID;
std::string optionData;
HeaderOptions headerOptions;
for(int i = 0;
i < entityHandlerRequest->numRcvdVendorSpecificHeaderOptions;
i++)
{
optionID = entityHandlerRequest->rcvdVendorSpecificHeaderOptions[i].optionID;
optionData = reinterpret_cast<const char*>
(entityHandlerRequest->rcvdVendorSpecificHeaderOptions[i].optionData);
HeaderOption::OCHeaderOption headerOption(optionID, optionData);
headerOptions.push_back(headerOption);
}
pRequest->setHeaderOptions(headerOptions);
}
if(OC_REST_GET == entityHandlerRequest->method)
{
pRequest->setRequestType(OC::PlatformCommands::GET);
}
else if(OC_REST_PUT == entityHandlerRequest->method)
{
pRequest->setRequestType(OC::PlatformCommands::PUT);
pRequest->setPayload(entityHandlerRequest->payload);
}
else if(OC_REST_POST == entityHandlerRequest->method)
{
pRequest->setRequestType(OC::PlatformCommands::POST);
pRequest->setPayload(entityHandlerRequest->payload);
}
else if(OC_REST_DELETE == entityHandlerRequest->method)
{
pRequest->setRequestType(OC::PlatformCommands::DELETE);
}
}
}
if(flag & OC_OBSERVE_FLAG)
{
pRequest->setRequestHandlerFlag(
OC::RequestHandlerFlag::RequestFlag | OC::RequestHandlerFlag::ObserverFlag);
if(entityHandlerRequest)
{
OC::ObservationInfo observationInfo;
observationInfo.action = (OC::ObserveAction) entityHandlerRequest->obsInfo.action;
observationInfo.obsId = entityHandlerRequest->obsInfo.obsId;
observationInfo.connectivityType = static_cast<OCConnectivityType>(
(entityHandlerRequest->devAddr.adapter << CT_ADAPTER_SHIFT) |
(entityHandlerRequest->devAddr.flags & CT_MASK_FLAGS));
observationInfo.address = entityHandlerRequest->devAddr.addr;
observationInfo.port = entityHandlerRequest->devAddr.port;
pRequest->setObservationInfo(observationInfo);
}
}
}
示例3: foundDevice
void foundDevice(std::shared_ptr<OCResource> resource)
{
using namespace OC::OCPlatform;
if(resource && resource->uri() == "/device")
{
std::cout << "Discovered a device object"<<std::endl;
std::cout << "\tHost: "<<resource->host()<<std::endl;
std::cout << "\tURI: "<<resource->uri() <<std::endl;
}
// we have now found a resource, so lets create a few resource objects
// for the other resources that we KNOW are associated with the intel.fridge
// server, and query them.
std::vector<std::string> lightTypes = {"intel.fridge.light"};
std::vector<std::string> ifaces = {DEFAULT_INTERFACE};
OCResource::Ptr light = constructResourceObject(resource->host(),
"/light", m_connectivityType, false, lightTypes, ifaces);
if(!light)
{
std::cout << "Error: Light Resource Object construction returned null\n";
return;
}
std::vector<std::string> doorTypes = {"intel.fridge.door"};
OCResource::Ptr leftdoor = constructResourceObject(resource->host(),
"/door/left", m_connectivityType, false, doorTypes, ifaces);
if(!leftdoor)
{
std::cout << "Error: Left Door Resource Object construction returned null\n";
return;
}
OCResource::Ptr rightdoor = constructResourceObject(resource->host(),
"/door/right", m_connectivityType, false, doorTypes, ifaces);
if(!rightdoor)
{
std::cout << "Error: Right Door Resource Object construction returned null\n";
return;
}
OCResource::Ptr randomdoor = constructResourceObject(resource->host(),
"/door/random", m_connectivityType, false, doorTypes, ifaces);
if(!randomdoor)
{
std::cout << "Error: Random Door Resource Object construction returned null\n";
return;
}
// Set header options with API version and token
HeaderOptions headerOptions;
try
{
// Set API version and client token
HeaderOption::OCHeaderOption apiVersion(API_VERSION, "v.1.0");
HeaderOption::OCHeaderOption clientToken(TOKEN, "21ae43gf");
headerOptions.push_back(apiVersion);
headerOptions.push_back(clientToken);
}
catch(OCException& e)
{
std::cout << "Error creating HeaderOption: " << e.what() << std::endl;
}
// Setting header options will send above options in all requests
// Header options are set per resource.
// Below, header options are set only for device resource
resource->setHeaderOptions(headerOptions);
++m_callsMade;
resource->get(QueryParamsMap(), GetCallback(
std::bind(&ClientFridge::getResponse, this, "Device", PH::_1,
PH::_2, PH::_3, resource, 0)
));
++m_callsMade;
light->get(QueryParamsMap(), GetCallback(
std::bind(&ClientFridge::getResponse, this, "Fridge Light", PH::_1,
PH::_2, PH::_3, light, 1)
));
++m_callsMade;
leftdoor->get(QueryParamsMap(), GetCallback(
std::bind(&ClientFridge::getResponse, this, "Left Door", PH::_1,
PH::_2, PH::_3, leftdoor, 2)
));
++m_callsMade;
rightdoor->get(QueryParamsMap(), GetCallback(
std::bind(&ClientFridge::getResponse, this, "Right Door", PH::_1,
PH::_2, PH::_3, rightdoor, 3)
));
++m_callsMade;
randomdoor->get(QueryParamsMap(), GetCallback(
std::bind(&ClientFridge::getResponse, this, "Random Door", PH::_1,
PH::_2, PH::_3, randomdoor, 4)
));
++m_callsMade;
resource->deleteResource(DeleteCallback(
std::bind(&ClientFridge::deleteResponse, this, "Device", PH::_1,
//.........这里部分代码省略.........
示例4: entityHandler
virtual OCEntityHandlerResult entityHandler(std::shared_ptr<OCResourceRequest> request)
{
OCEntityHandlerResult ehResult = OC_EH_ERROR;
if(request)
{
// Get the header options from the request
HeaderOptions headerOptions = request->getHeaderOptions();
std::string clientAPIVersion;
std::string clientToken;
// Search the header options map and look for API version and Client token
for (auto it = headerOptions.begin(); it != headerOptions.end(); ++it)
{
uint16_t optionID = it->getOptionID();
if(optionID == API_VERSION)
{
clientAPIVersion = it->getOptionData();
std::cout << " Client API version: " << clientAPIVersion << std::endl;
}
else if(optionID == TOKEN)
{
clientToken = it->getOptionData();
std::cout << " Client token: " << clientToken << std::endl;
}
else
{
std::cout << " Invalid header option " << std::endl;
}
}
// In this case Server entity handler verifies API version
// and client token. If they are valid, client requests are handled.
if(clientAPIVersion == FRIDGE_CLIENT_API_VERSION && clientToken == FRIDGE_CLIENT_TOKEN)
{
HeaderOptions serverHeaderOptions;
try
{
// Set API version from server side
HeaderOption::OCHeaderOption apiVersion(API_VERSION, FRIDGE_CLIENT_API_VERSION);
serverHeaderOptions.push_back(apiVersion);
}
catch(OCException& e)
{
std::cout << "Error creating HeaderOption in server: " << e.what() << std::endl;
}
if(request->getRequestHandlerFlag() == RequestHandlerFlag::RequestFlag)
{
auto pResponse = std::make_shared<OC::OCResourceResponse>();
pResponse->setRequestHandle(request->getRequestHandle());
pResponse->setResourceHandle(request->getResourceHandle());
pResponse->setHeaderOptions(serverHeaderOptions);
if(request->getRequestType() == "GET")
{
std::cout<<"DeviceResource Get Request"<<std::endl;
pResponse->setErrorCode(200);
pResponse->setResponseResult(OC_EH_OK);
pResponse->setResourceRepresentation(get(), "");
if(OC_STACK_OK == OCPlatform::sendResponse(pResponse))
{
ehResult = OC_EH_OK;
}
}
else if(request->getRequestType() == "DELETE")
{
std::cout<<"DeviceResource Delete Request"<<std::endl;
if(deleteDeviceResource() == OC_STACK_OK)
{
pResponse->setErrorCode(200);
pResponse->setResponseResult(OC_EH_RESOURCE_DELETED);
ehResult = OC_EH_OK;
}
else
{
pResponse->setResponseResult(OC_EH_ERROR);
ehResult = OC_EH_ERROR;
}
OCPlatform::sendResponse(pResponse);
}
else
{
std::cout <<"DeviceResource unsupported request type "
<< request->getRequestType() << std::endl;
pResponse->setResponseResult(OC_EH_ERROR);
OCPlatform::sendResponse(pResponse);
ehResult = OC_EH_ERROR;
}
}
else
{
std::cout << "DeviceResource unsupported request flag" <<std::endl;
}
}
else
{
std::cout << "Unsupported/invalid header options/values" << std::endl;
}
}
//.........这里部分代码省略.........