00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __COMMAND_H__
00022 #define __COMMAND_H__
00023
00024 #include <vector>
00025 #include <map>
00026 #include <boost/filesystem/path.hpp>
00027 #include <miniXml/ustring.h>
00028
00029 namespace Spm
00030 {
00031 namespace Util
00032 {
00037 class Command
00038 {
00039 private :
00040 miniXml::ustring cmd_;
00041 boost::filesystem::path workingDir_;
00042 std::vector<miniXml::ustring> args_;
00043 std::map<miniXml::ustring,
00044 miniXml::ustring> envs_;
00045 unsigned int pid_;
00046 int retVal_;
00047
00048
00049 public:
00053 Command (const miniXml::ustring & cmd);
00054
00057 Command ();
00058
00059 void setCommand (const miniXml::ustring & cmd);
00060
00065 void add (const miniXml::ustring & arg);
00066
00072 void add (const miniXml::ustring & var,
00073 const miniXml::ustring & val);
00074
00080 bool execSync (miniXml::ustring & out,
00081 miniXml::ustring & err);
00082
00089 bool execASync (int & out,
00090 int & err,
00091 int & in);
00092
00096 const boost::filesystem::path & getWorkingDir ();
00097
00101 void setWorkingDir (const boost::filesystem::path & dir);
00102
00106 unsigned int getPid ();
00107
00111 int getReturnValue ();
00112
00113
00114
00115
00116
00117
00118
00119
00120 static int exec (const miniXml::ustring & cmd,
00121 miniXml::ustring & out,
00122 miniXml::ustring & err);
00123
00128 bool wait ();
00129
00130
00131
00132
00133
00134 void kill (int signal = 9);
00135
00136
00142 static void argsFromString (const miniXml::ustring & str,
00143 std::vector<miniXml::ustring> & args);
00144 };
00145 }
00146 }
00147 #endif