Mesos

 view release on metacpan or  search on metacpan

xsp/SchedulerDriver.xsp  view on Meta::CPAN

%module{Mesos};
#include <SchedulerDriver.hpp>
#include <ProxyScheduler.hpp>
#include <XS/MesosUtils.hpp>
#include <string>
#include <vector>


%name{Mesos::XS::SchedulerDriver} class mesos::perl::SchedulerDriver
{

%{

static void
_xs_init(SV* self, mesos::FrameworkInfo framework, std::string master, mesos::perl::MesosChannel* channel, ...)
    PPCODE:
        if (SvROK(self) && SvTYPE(SvRV(self)) == SVt_PVHV) {
            mesos::perl::SchedulerDriver* driver;
            // make sure channel ref gets incremented
            mesos::perl::ProxyScheduler* proxy = new mesos::perl::ProxyScheduler(channel->share());
            if (items > 4) {
                mesos::Credential credential( toMsg<mesos::Credential>(ST(4)) );
                driver = new mesos::perl::SchedulerDriver(framework, master, credential, proxy);
            } else {
                driver = new mesos::perl::SchedulerDriver(framework, master, proxy);
            }
            sv_magic(SvRV(self), Nullsv, PERL_MAGIC_ext,
                             (const char*) driver, 0);
        }

%}

~SchedulerDriver();

Status start();

Status stop(bool failover = false);

Status abort();

Status requestResources(std::vector<mesos::Request> requests);

Status launchTasks(std::vector<mesos::OfferID> offerIds, std::vector<mesos::TaskInfo> tasks, mesos::Filters filters = mesos::Filters());

Status launchTask(mesos::OfferID offerId, std::vector<mesos::TaskInfo> tasks, mesos::Filters filters = mesos::Filters());

Status killTask(mesos::TaskID taskId);

Status declineOffer(mesos::OfferID offerId, mesos::Filters filters);

Status reviveOffers();

Status sendFrameworkMessage(mesos::ExecutorID executorId, mesos::SlaveID slaveId, std::string data);

Status reconcileTasks(std::vector<mesos::TaskStatus> statuses);

Status status()
    %code{% RETVAL = THIS->status_; %};

};



( run in 0.657 second using v1.01-cache-2.11-cpan-5511b514fd6 )