1 #ifndef __JRUNCONTROL__JCLIENT__
2 #define __JRUNCONTROL__JCLIENT__
67 const std::string& __hostname,
68 const std::string& __start_command =
"") :
93 if (start_command !=
"") {
97 shell << start_command << endl;
111 void stop(
const int signal = -9)
116 if (start_command !=
"") {
118 const string header =
"__header___";
119 const string trailer =
"__trailer__";
123 os <<
"ssh " << hostname <<
' '
125 <<
"echo" <<
' ' << header <<
";"
126 <<
"ps hax -o '%p %a'" <<
";"
127 <<
"echo" <<
' ' << trailer
132 shell << os.str() << endl;
138 while (
getline(shell, buffer) && buffer.find(header) == string::npos) {}
142 while (
getline(shell, buffer) && buffer.find(trailer) == string::npos) {
149 if (is >> pid &&
getline(is >> ws, buffer)) {
150 if (start_command.find(buffer) != string::npos) {
151 os <<
"ssh " << hostname <<
' '
153 <<
"kill " << signal <<
" " << pid <<
" </dev/null >&/dev/null"
161 if (os.str() !=
"") {
162 shell << os.str() << endl;
209 return start_command;
220 return mode == SLEEP;
231 return mode == ACTIVE;
242 return mode == IGNORE;
253 return mode == ILLEGAL;
272 this->is_alive =
true;
279 this->is_alive =
false;
292 istringstream
is(buffer);
300 this->event_name =
event.getName();
301 this->event_info =
event.getInfo();
302 this->state_name = state;
421 in >> client.hostname;
425 getline(in >> std::ws, client.start_command);
447 out << client.hostname;
449 out << client.start_command;
471 start_command = start_command.trim();
472 start_command = start_command.replace(
" ",
" ");
474 start_command.replace(
"$HOST$", hostname);
475 start_command.replace(
"$NAME$",
name);
476 start_command.replace(
"$SERVER$",
SERVER);
477 start_command.replace(
"$LOGGER$",
LOGGER);
481 if (pos != string::npos) {
482 start_command.replace(
"$ARGS$",
name.substr(pos + 1));
JSocketNonblockingWriter out
writer for outgoing messages
The JShell clas can be used to interact with the shell via I/O streams.
bool isIgnore() const
Check ignore mode.
static const JTag DISPTAG_Died("Died")
Wrapper class around STL string class.
bool update(const JNET::JTag &tag, const std::string &buffer)
Update client.
friend std::istream & operator>>(std::istream &in, JClient &client)
Read client from input.
const std::string & getStatename() const
Get name of current state.
bool getAlive() const
Get alive status.
then echo Variable JPP_DIR undefined exit fi source $JPP_DIR setenv sh $JPP_DIR &dev null set_variable SERVER localhost define_variable LOGGER if do_usage *then usage $script< server >[logger] fi case set_variable LOGGER
ControlHost client manager.
static std::string LOGGER
host name of message logger
const std::string & getEventInfo() const
Get event information.
int getDied() const
Get died count.
static const std::string TOKEN_DELIMETER
void start()
Start process.
void setMode(const JMode mode)
Set mode.
int getBorn() const
Get born count.
JLANG::JString start_command
bool isActive() const
Check active mode.
friend std::ostream & operator<<(std::ostream &out, const JClient &client)
Write client to output.
static const std::string RUN_CONTROL_CLIENT
void setAlive(const bool alive)
Set alive status.
JSocketInputChannel_t in
reader for incoming messages
static const JNET::JTag RC_REPLY
void stop(const int signal=-9)
Stop process.
then echo Test string reversed by client(hit< return > to continue)." $DIR/JProcess -c "$DIR/JEcho-r" -C fi if (( 1 ))
JMode getMode() const
Get mode.
static const std::string CLIENTNAME_DELIMETER
const std::string & getFullName() const
Get full name of run control client.
std::istream & getline(std::istream &in, JString &object)
Read string from input stream until end of line.
bool isSleep() const
Check sleep mode.
Auxiliary class for handling event name and optional static information.
JShell & flush(std::ostream &out=null)
Extracts characters from this shell and flush them to the given output stream until the prompt is rea...
then fatal The output file must have the wildcard in the name
static const JTag DISPTAG_Born("Born")
bool isIllegal() const
Check illegal mode.
Auxiliary class to specify white space character(s) in currect locale.
const std::string & getHostname() const
Get host name of run control client.
const std::string & getName() const
Get name of run control client.
static JShell & getInstance()
Get reference to unique instance of this class object.
Shell interaction via I/O streams.
static std::string SERVER
host name of message server
JClient(const std::string &__name, const std::string &__hostname, const std::string &__start_command="")
Constructor.
const std::string & getEventname() const
Get name of last event.
std::string getFullName(const std::string &hostname, const std::string &name)
Get full name of run control client.
void configure()
Configure client parameters.
JClient()
Default constructor.
const std::string & getStartCommand() const
Get start command of run control client.