softwarecontainer  0.18.0-739e8d7 2017-05-04
softwarecontainer::FunctionJob Class Reference

Run a C++ function lambda inside a SoftwareContainer. More...

#include <functionjob.h>

Inheritance diagram for softwarecontainer::FunctionJob:
[legend]
Collaboration diagram for softwarecontainer::FunctionJob:
[legend]

Public Member Functions

 FunctionJob (ExecutablePtr executable, std::function< int()> fun)
 
bool start ()
 
void setEnvironmentVariable (const std::string &key, const std::string &value)
 
std::string toString () const
 
void captureStdin ()
 
void setOutputFile (const std::string &path)
 
void captureStdout ()
 
void captureStderr ()
 
int wait ()
 
int stdout ()
 
int stderr ()
 
int stdin ()
 
pid_t pid ()
 
bool isSuccess ()
 Helper about return value of jobs. More...
 
bool isError ()
 Helper about return value of jobs. More...
 
bool isRunning ()
 That method always returns true as soon as the start() method has been called, even if the command fails to start, since we don't know if the exec() occurring after the fork into the container actually succeeds... More...
 
void setEnvironmentVariables (const EnvironmentVariables &env)
 

Static Public Attributes

static constexpr int UNASSIGNED_STREAM
 

Protected Types

typedef std::shared_ptr< ExecutableExecutablePtr
 

Protected Member Functions

 LOG_DECLARE_CLASS_CONTEXT ("JOAB","JobAbstract")
 

Protected Attributes

EnvironmentVariables m_env
 
ExecutablePtr m_executable
 
int m_exitStatus
 
pid_t m_pid
 
int m_stdin [2]
 
int m_stdout [2]
 
int m_stderr [2]
 

Detailed Description

Run a C++ function lambda inside a SoftwareContainer.

Definition at line 30 of file functionjob.h.

Member Function Documentation

bool softwarecontainer::JobAbstract::isSuccess ( )
inherited

Helper about return value of jobs.

Describes whether the exit status of a command or a function indicates success or not

Note that this method will interpret exit status only for the last job

Definition at line 85 of file jobabstract.cpp.

86 {
87  if (0 == m_exitStatus) {
88  return true;
89  }
90 
91  return false;
92 }
bool softwarecontainer::JobAbstract::isError ( )
inherited

Helper about return value of jobs.

Describes whether the exit status of a command or a function indicates error or not

Note that this method will interpret exit status only for the last job

Definition at line 94 of file jobabstract.cpp.

95 {
96  return !isSuccess();
97 }
bool isSuccess()
Helper about return value of jobs.
Definition: jobabstract.cpp:85
bool softwarecontainer::JobAbstract::isRunning ( )
inherited

That method always returns true as soon as the start() method has been called, even if the command fails to start, since we don't know if the exec() occurring after the fork into the container actually succeeds...

Definition at line 103 of file jobabstract.cpp.

104 {
105  // TODO : find a way to test whether the exec() which occurs in the container succeeded
106  return (m_pid != 0);
107 }

The documentation for this class was generated from the following files: