feisty meow concerns codebase  2.140
shutdown_alerter Class Reference

A platform-independent way to alert a program that it should shut down immediately. More...

#include <shutdown_alerter.h>

Inheritance diagram for shutdown_alerter:
Collaboration diagram for shutdown_alerter:

Public Member Functions

 shutdown_alerter ()
 constructor does very little; setup() is what begins operation. More...
 
virtual ~shutdown_alerter ()
 
 DEFINE_CLASS_NAME ("shutdown_alerter")
 
bool setup (const basis::astring &app_name, int timer_period=0)
 constructs a shutdown_alerter for the "app_name" specified. More...
 
bool saw_interrupt ()
 reports whether the process saw an interrupt from the user. More...
 
virtual void handle_startup ()
 this function is called once the program has begun operation. More...
 
virtual void handle_shutdown ()
 called during the program's shutdown process. More...
 
virtual void handle_timer ()
 called periodically if a timer period was specified. More...
 

Static Public Member Functions

static bool is_defunct ()
 returns true if the object has been marked as defunct. More...
 
static void set_defunct ()
 used by the derived class to mark that this object is about to exit. More...
 
static bool launch_console (shutdown_alerter &alert, const basis::astring &app_name, int timer_period=0)
 this is used to begin execution of a console mode application. More...
 
static void close_this_program ()
 causes this particular application to begin shutting down. More...
 
static bool close_application (const basis::astring &app_name)
 attempts to close the application named "app_name". More...
 
static void handle_OS_signal (int sig_id)
 processes the signal from the OS when its time to shut down. More...
 

Detailed Description

A platform-independent way to alert a program that it should shut down immediately.

This can provide a service management feature for graceful shutdown of an application, allowing it a chance to close its objects cleanly, rather than just being whacked in the middle of whatever it's doing. Only one of these objects should be instantiated per program, but the static methods can be used from anywhere in the program.

Definition at line 33 of file shutdown_alerter.h.

Constructor & Destructor Documentation

◆ shutdown_alerter()

shutdown_alerter::shutdown_alerter ( )

constructor does very little; setup() is what begins operation.

Definition at line 68 of file shutdown_alerter.cpp.

◆ ~shutdown_alerter()

shutdown_alerter::~shutdown_alerter ( )
virtual

Definition at line 72 of file shutdown_alerter.cpp.

Member Function Documentation

◆ close_application()

bool shutdown_alerter::close_application ( const basis::astring app_name)
static

attempts to close the application named "app_name".

this can only be done if this program possesses sufficient rights to zap that program.

Definition at line 97 of file shutdown_alerter.cpp.

References processes::process_control::find_process_in_list(), FUNCDEF, basis::array< contents >::length(), LOG, and processes::process_control::query_processes().

Referenced by process_anchor::close_app_anchor().

◆ close_this_program()

void shutdown_alerter::close_this_program ( )
static

causes this particular application to begin shutting down.

this is a static method available for programs that support the shutdown_alerter's graceful shutdown process. it causes the application to begin the shutdown.

Definition at line 92 of file shutdown_alerter.cpp.

Referenced by process_anchor::close_this_program().

◆ DEFINE_CLASS_NAME()

shutdown_alerter::DEFINE_CLASS_NAME ( "shutdown_alerter"  )

◆ handle_OS_signal()

void shutdown_alerter::handle_OS_signal ( int  sig_id)
static

processes the signal from the OS when its time to shut down.

Definition at line 132 of file shutdown_alerter.cpp.

◆ handle_shutdown()

void shutdown_alerter::handle_shutdown ( )
virtual

called during the program's shutdown process.

this is invoked just prior to the destruction of this class which is also just before the shutdown of the program overall. in this method, the derived object must ensure that any threads the program started get stopped, that any opened files get closed, and that any other resources are released. this is the application's last chance to clean up.

Reimplemented in process_anchor.

Definition at line 82 of file shutdown_alerter.cpp.

Referenced by launch_console().

◆ handle_startup()

void shutdown_alerter::handle_startup ( )
virtual

this function is called once the program has begun operation.

Reimplemented in process_anchor.

Definition at line 80 of file shutdown_alerter.cpp.

Referenced by launch_console().

◆ handle_timer()

void shutdown_alerter::handle_timer ( )
virtual

called periodically if a timer period was specified.

Reimplemented in process_anchor.

Definition at line 84 of file shutdown_alerter.cpp.

◆ is_defunct()

static bool shutdown_alerter::is_defunct ( )
inlinestatic

returns true if the object has been marked as defunct.

this means that it is either shutting down or soon will be.

Definition at line 50 of file shutdown_alerter.h.

Referenced by process_anchor::defunct(), and launch_console().

◆ launch_console()

bool shutdown_alerter::launch_console ( shutdown_alerter alert,
const basis::astring app_name,
int  timer_period = 0 
)
static

this is used to begin execution of a console mode application.

this method does not do anything except sit while the extant threads are in play. it will not return until the program must exit, as caused by close_this_program() or close_application().

Definition at line 170 of file shutdown_alerter.cpp.

References application::_global_argv, FUNCDEF, handle_shutdown(), handle_startup(), is_defunct(), LOG, program_wide_timer, timely::time_stamp::reset(), basis::SECOND_ms, and setup().

Referenced by process_anchor::launch(), and main().

◆ saw_interrupt()

bool shutdown_alerter::saw_interrupt ( )
inline

reports whether the process saw an interrupt from the user.

Definition at line 58 of file shutdown_alerter.h.

◆ set_defunct()

void shutdown_alerter::set_defunct ( )
static

used by the derived class to mark that this object is about to exit.

note that this can be used anywhere in the program to initiate an exit of the program.

Definition at line 140 of file shutdown_alerter.cpp.

Referenced by process_anchor::set_defunct().

◆ setup()

bool shutdown_alerter::setup ( const basis::astring app_name,
int  timer_period = 0 
)

constructs a shutdown_alerter for the "app_name" specified.

this can be any string, although it might be processed for certain operating systems. also, for close_this_program() to work properly, it must be the application's basename. the "timer_period" specifies how frequently to invoke the handle_timer() method during runtime.

Definition at line 145 of file shutdown_alerter.cpp.

Referenced by launch_console(), and process_anchor::setup().


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