packages feed

hs-mesos-0.20.0.0: ext/types/master_info.cpp

#include <iostream>
#include "types.h"

using namespace mesos;

MasterInfoPtr toMasterInfo(char* infoID,
			   int infoIDLen,
			   unsigned int infoIP,
			   unsigned int* infoPort,
			   char* pid,
			   int pidLen,
			   char* hostname,
			   int hostnameLen)
{
  MasterInfoPtr masterInfo = new MasterInfo();
  masterInfo->set_id(infoID, infoIDLen);
  masterInfo->set_ip(infoIP);
  if (infoPort != NULL)
    masterInfo->set_port(*infoPort);

  if (pid != NULL)
    masterInfo->set_pid(pid, pidLen);

  if (hostname != NULL)
    masterInfo->set_hostname(hostname, hostnameLen);

  return masterInfo;
}

void fromMasterInfo(MasterInfoPtr info,
		    char** infoID,
		    int* infoIDLen,
		    unsigned int* infoIP,
		    unsigned int* infoPort,
		    char** pid,
		    int* pidLen,
		    char** hostname,
		    int* hostnameLen)
{
  std::string* i = info->mutable_id();
  *infoID = (char*) i->data();
  *infoIDLen = i->size();
  *infoIP = info->ip();
  *infoPort = info->port();

  if (info->has_pid())
    {
      std::string* p = info->mutable_pid();
      *pid = (char*) p->data();
      *pidLen = p->size();
    }

  if (info->has_hostname())
    {
      std::string* h = info->mutable_hostname();
      *hostname = (char*) h->data();
      *hostnameLen = h->size();
    }
}

void destroyMasterInfo(MasterInfoPtr info)
{
  delete info;
}