-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/22224/
-----------------------------------------------------------

(Updated June 5, 2014, 5:57 a.m.)


Review request for mesos, Benjamin Hindman, Ian Downes, and Vinod Kone.


Changes
-------

Vinod and Dominic's comments.


Bugs: MESOS-1446
    https://issues.apache.org/jira/browse/MESOS-1446


Repository: mesos-git


Description
-------

Currently, whenever we want something to be executed in a subprocess, we create 
a separate binary (e.g., mesos-fetcher, mesos-executor, mesos-usage, etc.). 
This has several drawbacks:

1) Code duplication (passing arguments, main function, etc.)
2) Split logic into multiple files (not good for readability)

To solve that, I created a generic 'launcher' for 'Operation's. Users can 
define their own 'Operation' and 'launch' it in a subprocess. For instance:

class CustomizedOperation : public Operation
{
public:
  class Flags : public flags::FlagsBase
  {
    Flags();
    Option<string> arg1;
    Option<int> arg2;
  };

protected:
  virtual string name() const { return "customized_operation"; }

  virtual int execute()
  {
    if (arg1.isNone()) { return 1; }
    if (arg2.isNone()) { return 1; }

    do_something(arg1.get(), arg2.get());
  }
};

In your code, if you want to execute 'CustomizedOperation' in a subprocess, you 
can just launch it:

CustomizedOperation operation;
operation.flags.arg1 = "arg1";
operation.flags.arg2 = "arg2";

operation.launch(flags.launcher_dir + "/mesos-launcher");

We will handle the flags passing and parsing for you under the hood.


Diffs (updated)
-----

  src/Makefile.am c3ecb94 
  src/launcher/launcher.hpp PRE-CREATION 
  src/launcher/launcher.cpp PRE-CREATION 
  src/launcher/main.cpp PRE-CREATION 
  src/tests/environment.cpp 3e10508 
  src/tests/launcher_tests.cpp PRE-CREATION 

Diff: https://reviews.apache.org/r/22224/diff/


Testing
-------

make check


Thanks,

Jie Yu

Reply via email to