hs-mesos-0.20.0.0: ext/types/resource.cpp
#include <iostream>
#include "types.h"
using namespace mesos;
ResourcePtr toResource(char* name,
int nameLen,
ValuePtr value,
char* role,
int roleLen)
{
ResourcePtr resource = new Resource();
resource->set_name(name, nameLen);
resource->set_type(value->type());
if (value->has_scalar())
*(resource->mutable_scalar()) = *value->mutable_scalar();
if (value->has_ranges())
*(resource->mutable_ranges()) = *value->mutable_ranges();
if (value->has_set())
*(resource->mutable_set()) = *value->mutable_set();
if (value->has_text())
*resource->mutable_set()->add_item() = value->mutable_text()->value();
if (role != NULL)
resource->set_role(role, roleLen);
return resource;
}
void fromResource(ResourcePtr resource,
char** name,
int* nameLen,
ValuePtr* value,
char** role,
int* roleLen)
{
std::string* n = resource->mutable_name();
*name = (char*) n->data();
*nameLen = n->size();
Value* v = new Value();
if (resource->has_scalar())
{
v->set_type(Value_Type_SCALAR);
*v->mutable_scalar() = resource->scalar();
}
if (resource->has_ranges())
{
v->set_type(Value_Type_RANGES);
*v->mutable_ranges() = resource->ranges();
}
if (resource->has_set())
{
v->set_type(Value_Type_SET);
*v->mutable_set() = resource->set();
}
*value = v;
std::string* r = resource->mutable_role();
*role = (char*) r->data();
*roleLen = r->size();
}
void destroyResource(ResourcePtr resource)
{
delete resource;
}