예제 #1
0
SchedulerDriverStatus scheduler_launchTasks(
    SchedulerDriverPtr driver,
    ProtobufObj* offerId,
    ProtobufObj* tasks,
    ProtobufObj* filters)
{
  TRACE("scheduler_launchTasks()\n");
  assert(driver != NULL);
  assert(offerId != NULL);
  assert(tasks != NULL);

  MesosSchedulerDriver* mdriver =
      reinterpret_cast<MesosSchedulerDriver*>(driver);

  OfferID offer;
  if (!utils::deserialize<OfferID>(offer, offerId)) {
    return DRIVER_ABORTED;
  }

  vector<TaskInfo> taskInfos;
  if (!utils::deserialize<TaskInfo>(taskInfos, tasks)) {
    return DRIVER_ABORTED;
  }

  Filters filters_;
  if (filters != NULL && filters->data != NULL) {
    if (!utils::deserialize<Filters>(filters_, filters)) {
      return DRIVER_ABORTED;
    }
  }

  TRACE("scheduler_launchTasks start()\n");
  return mdriver->launchTasks(offer, taskInfos, filters_);
}
예제 #2
0
SchedulerDriverStatus scheduler_launchTasks(SchedulerPtrPair state, 
                                              ErlNifBinary* offerId, 
                                              BinaryNifArray* taskInfos, 
                                              ErlNifBinary* filters)
{
  assert(state.driver != NULL);
  assert(offerId != NULL);
  assert(taskInfos != NULL);

  OfferID offerid_pb;
  vector<TaskInfo> taskInfo_ ;
  Filters filter_pb;

  if(!deserialize<OfferID>(offerid_pb,offerId)) { return DRIVER_ABORTED; };
  if(!deserialize<TaskInfo>( taskInfo_, taskInfos)) {return DRIVER_ABORTED;};
  if(!deserialize<Filters>(filter_pb,filters)) { return DRIVER_ABORTED; };

  //offerid_pb.PrintDebugString();
  //taskInfo_[0].PrintDebugString();
  //filter_pb.PrintDebugString();

  MesosSchedulerDriver* driver = reinterpret_cast<MesosSchedulerDriver*> (state.driver);
  return driver->launchTasks(offerid_pb, taskInfo_,filter_pb);
}