libassa  3.5.1
Public Member Functions | Private Attributes | List of all members
ASSA::ChildStatusHandler Class Reference

A helper class of Fork. More...

#include <Fork.h>

Inheritance diagram for ASSA::ChildStatusHandler:
ASSA::EventHandler

Public Member Functions

 ChildStatusHandler ()
 
int handle_signal (int signum_)
 Signal handler callback. More...
 
int exit_status () const
 
bool caught () const
 
- Public Member Functions inherited from ASSA::EventHandler
 EventHandler ()
 Constructor. More...
 
virtual ~EventHandler ()
 Virtual destructor. More...
 
virtual int handle_read (int fd)
 Read event callback. More...
 
virtual int handle_write (int fd)
 Write handler callback. More...
 
virtual int handle_except (int fd)
 Exception handler callback. More...
 
virtual int handle_timeout (TimerId tid)
 Timeout handler callback. More...
 
virtual int handle_close (int fd)
 EOF on peer socket handler callback. More...
 
virtual void resetState (void)
 A hook for derived class to reset internal state as needed. More...
 
void set_id (const std::string &id_)
 Set EventHandler ID. More...
 
std::string get_id () const
 Retrieve EventHandler ID. More...
 

Private Attributes

int m_exit_status
 
bool m_caught
 

Additional Inherited Members

- Protected Attributes inherited from ASSA::EventHandler
std::string m_id
 

Detailed Description

A helper class of Fork.

Definition at line 58 of file Fork.h.

Constructor & Destructor Documentation

◆ ChildStatusHandler()

ASSA::ChildStatusHandler::ChildStatusHandler ( )
inline

Definition at line 61 of file Fork.h.

62  : m_exit_status (-1), m_caught (false) { /* no-op */ }

Member Function Documentation

◆ caught()

bool ASSA::ChildStatusHandler::caught ( ) const
inline
Returns
true if the signal has been caught; false otherwise

Definition at line 73 of file Fork.h.

73 { return m_caught; }

References m_caught.

Referenced by ASSA::Fork::Fork().

◆ exit_status()

int ASSA::ChildStatusHandler::exit_status ( ) const
inline
Returns
-1 if failed on wait(); otherwise an exit status of the child process as returned by either RETURN or EXIT

Definition at line 69 of file Fork.h.

69 { return m_exit_status; }

References m_exit_status.

Referenced by ASSA::Fork::get_exit_status().

◆ handle_signal()

int ChildStatusHandler::handle_signal ( int  signum_)
virtual

Signal handler callback.

Returns
0 on success, -1 on error

Reimplemented from ASSA::EventHandler.

Definition at line 134 of file Fork.cpp.

136 {
137  trace_with_mask("ChildStatusHandler::handle_signal", FORK);
138  DL((FORK, "Caught signal # %d\n", signum_));
139 
140  if (signum_ == SIGCHLD) {
141  int status;
142  m_caught = true;
143  pid_t ret = ::wait (&status);
144  DL((FORK,"wait() = %d (PID)\n", ret));
145 
146  if (ret > 0 && (WIFEXITED (status))) {
147  m_exit_status = WEXITSTATUS (status);
148  }
149  else {
150  m_exit_status = ret;
151  }
152  }
153 
154  DL((FORK,"child exit_status = %d\n", m_exit_status));
155  return 0;
156 }
#define DL(X)
A macro for writing debug message to the Logger.
Definition: Logger.h:273
#define trace_with_mask(s, m)
trace_with_mask() is used to trace function call chain in C++ program.
Definition: Logger.h:437
@ FORK
Class Fork messages
Definition: LogMask.h:47

References DL, ASSA::FORK, m_caught, m_exit_status, and trace_with_mask.

Member Data Documentation

◆ m_caught

bool ASSA::ChildStatusHandler::m_caught
private

Definition at line 77 of file Fork.h.

Referenced by caught(), and handle_signal().

◆ m_exit_status

int ASSA::ChildStatusHandler::m_exit_status
private

Definition at line 76 of file Fork.h.

Referenced by exit_status(), and handle_signal().


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