From 778e0c31fd43583a371ece4f7f72c8726ab521ff Mon Sep 17 00:00:00 2001 From: Riyad Parvez Date: Sun, 14 Feb 2016 23:20:56 -0500 Subject: [PATCH] Simplified cpp version --- cpp/Makefile | 4 ++-- cpp/crawl_executor.cpp | 39 ++++++++++----------------------------- cpp/render_executor.cpp | 38 ++++++++++---------------------------- cpp/rendler.cpp | 19 +++++++++++-------- 4 files changed, 33 insertions(+), 67 deletions(-) diff --git a/cpp/Makefile b/cpp/Makefile index 221cd94..d8d378e 100644 --- a/cpp/Makefile +++ b/cpp/Makefile @@ -1,5 +1,5 @@ -CXX = g++ -CXXFLAGS = -Wall -g -O2 -pthread -std=c++0x +CXX=g++ +CXXFLAGS=-Wall -g -O2 -pthread -std=c++11 INCLUDES=-I$(MESOS_INSTALL)/include LIBRARY_PATH=$(MESOS_INSTALL)/lib LDFLAGS += -L$(LIBRARY_PATH) -lmesos -lpthread -lprotobuf diff --git a/cpp/crawl_executor.cpp b/cpp/crawl_executor.cpp index 72278bf..caa2659 100644 --- a/cpp/crawl_executor.cpp +++ b/cpp/crawl_executor.cpp @@ -108,20 +108,6 @@ static void runTask(ExecutorDriver* driver, const TaskInfo& task) }; driver->sendFrameworkMessage(vectorToString(result)); - - TaskStatus status; - status.mutable_task_id()->MergeFrom(task.task_id()); - status.set_state(TASK_FINISHED); - driver->sendStatusUpdate(status); -} - - -void* start(void* arg) -{ - lambda::function* thunk = (lambda::function*) arg; - (*thunk)(); - delete thunk; - return NULL; } class CrawlExecutor : public Executor @@ -150,25 +136,20 @@ class CrawlExecutor : public Executor { cout << "Starting task " << task.task_id().value() << endl; - lambda::function* thunk = - new lambda::function(lambda::bind(&runTask, driver, task)); + TaskStatus status; + status.mutable_task_id()->MergeFrom(task.task_id()); + status.set_state(TASK_RUNNING); + + driver->sendStatusUpdate(status); - pthread_t pthread; - if (pthread_create(&pthread, NULL, &start, thunk) != 0) { - TaskStatus status; - status.mutable_task_id()->MergeFrom(task.task_id()); - status.set_state(TASK_FAILED); + runTask(driver, task); - driver->sendStatusUpdate(status); - } else { - pthread_detach(pthread); + cout << "Finishing task " << task.task_id().value() << endl; - TaskStatus status; - status.mutable_task_id()->MergeFrom(task.task_id()); - status.set_state(TASK_RUNNING); + status.mutable_task_id()->MergeFrom(task.task_id()); + status.set_state(TASK_FINISHED); - driver->sendStatusUpdate(status); - } + driver->sendStatusUpdate(status); } virtual void killTask(ExecutorDriver* driver, const TaskID& taskId) {} diff --git a/cpp/render_executor.cpp b/cpp/render_executor.cpp index 2ff3bd8..fcd3be1 100644 --- a/cpp/render_executor.cpp +++ b/cpp/render_executor.cpp @@ -58,19 +58,6 @@ static void runTask(ExecutorDriver* driver, const TaskInfo& task) assert(system(cmd.c_str()) != -1); driver->sendFrameworkMessage(vectorToString(result)); - - TaskStatus status; - status.mutable_task_id()->MergeFrom(task.task_id()); - status.set_state(TASK_FINISHED); - driver->sendStatusUpdate(status); -} - -void* start(void* arg) -{ - lambda::function* thunk = (lambda::function*) arg; - (*thunk)(); - delete thunk; - return NULL; } class RenderExecutor : public Executor @@ -100,25 +87,20 @@ class RenderExecutor : public Executor { cout << "Starting task " << task.task_id().value() << endl; - lambda::function* thunk = - new lambda::function(lambda::bind(&runTask, driver, task)); + TaskStatus status; + status.mutable_task_id()->MergeFrom(task.task_id()); + status.set_state(TASK_RUNNING); + + driver->sendStatusUpdate(status); - pthread_t pthread; - if (pthread_create(&pthread, NULL, &start, thunk) != 0) { - TaskStatus status; - status.mutable_task_id()->MergeFrom(task.task_id()); - status.set_state(TASK_FAILED); + runTask(driver, task); - driver->sendStatusUpdate(status); - } else { - pthread_detach(pthread); + cout << "Finishing task " << task.task_id().value() << endl; - TaskStatus status; - status.mutable_task_id()->MergeFrom(task.task_id()); - status.set_state(TASK_RUNNING); + status.mutable_task_id()->MergeFrom(task.task_id()); + status.set_state(TASK_FINISHED); - driver->sendStatusUpdate(status); - } + driver->sendStatusUpdate(status); } virtual void killTask(ExecutorDriver* driver, const TaskID& taskId) {} diff --git a/cpp/rendler.cpp b/cpp/rendler.cpp index 9aa4242..3c62651 100644 --- a/cpp/rendler.cpp +++ b/cpp/rendler.cpp @@ -34,6 +34,7 @@ using namespace mesos; using std::cout; +using std::cerr; using std::endl; using std::string; using std::vector; @@ -280,7 +281,7 @@ static void SIGINTHandler(int signum) #define shift argc--,argv++ int main(int argc, char** argv) { - string seedUrl, master; + string master, seedUrl; shift; while (true) { string s = argc>0 ? argv[0] : "--help"; @@ -319,14 +320,12 @@ int main(int argc, char** argv) renderer.set_name("Render Executor (C++)"); renderer.set_source("cpp"); - Rendler scheduler(crawler, renderer, seedUrl); - FrameworkInfo framework; framework.set_user(""); // Have Mesos fill in the current user. framework.set_name("Rendler Framework (C++)"); //framework.set_role(role); framework.set_principal("rendler-cpp"); - + // Set up the signal handler for SIGINT for clean shutdown. struct sigaction action; action.sa_handler = SIGINTHandler; @@ -334,15 +333,19 @@ int main(int argc, char** argv) action.sa_flags = 0; sigaction(SIGINT, &action, NULL); - schedulerDriver = new MesosSchedulerDriver(&scheduler, framework, master); + Rendler scheduler(crawler, renderer, seedUrl); + schedulerDriver = new MesosSchedulerDriver( + &scheduler, + framework, + master); + int status = schedulerDriver->run() == DRIVER_STOPPED ? 0 : 1; // Ensure that the driver process terminates. - schedulerDriver->stop(); - + schedulerDriver->stop(); shutdown(); - + delete schedulerDriver; return status; }