libassa  3.5.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Private Attributes
ASSA::SigHandlersList Class Reference

SigHandlersList class. More...

#include <SigHandlersList.h>

List of all members.

Classes

struct  CompSHL

Public Types

typedef EventHandlerkey_type
typedef EventHandlerdata_type
typedef set< key_type, CompSHLset_t
typedef set< key_type, CompSHL >
::iterator 
iterator

Public Member Functions

 ~SigHandlersList ()
 Destructor.
bool empty () const
 Is list empty.
size_t size () const
 Size of the list.
bool insert (data_type data_)
 Add an event handler data_ to the list.
void erase (const key_type key_)
 Find and remove event handler key_ from the list.
void erase (iterator it_)
 Remove an event handler pointed by iterator it_ from the list.
void erase ()
 Empty event handlers' list.
iterator begin ()
 Return an iterator pointing to the beginning of the list.
iterator end ()
 Return an iterator pointing to the end of the list.
iterator find (const key_type key_)
 Find event handler by its pointer key_.
CFUNC_Handlercfunc_handler (CFUNC_Handler *cfp_)
 Save 3rd party C function handler to remember.
CFUNC_Handlercfunc_handler () const
 Retrieve pointer to 3rd party C function handler.
void seen_cfunc_handler (bool ft_)
 Indicate whether 3rd party C function handler was installed.
bool seen_cfunc_handler () const

Static Public Member Functions

static SigHandlersListinstance (int signum_)
 Retrieve a pointer to the list of event handlers listening to signum_ signal delivery.

Static Public Attributes

static SigHandlersListm_instance [NSIG]
 Static map of signal numbers to SigHandlerLists.

Protected Member Functions

 SigHandlersList ()
 SigHandlersList (const SigHandlersList &map_)
SigHandlersListoperator= (const SigHandlersList &map_)

Private Attributes

set_tm_set
 Set of all event handlers registered for this signal.
int m_seen_cfh
 If true this flag indicates that 3rd party event handler has already been installed prior taking control by SigHandlers manager.
CFUNC_Handlerm_cfhp
 Pointer to the 3rd party signal handler in the set.

Detailed Description

SigHandlersList class.

SigHandlersList class is used by SigHandlers class to keep track of EventHandlers installed to be called on signal's delivery. It is sort of global process map of signal numbers into corresponding sets of EventHandlers that are listening for signal delivery.

Definition at line 65 of file SigHandlersList.h.


Member Typedef Documentation

Definition at line 69 of file SigHandlersList.h.

Definition at line 82 of file SigHandlersList.h.

Definition at line 68 of file SigHandlersList.h.

Definition at line 81 of file SigHandlersList.h.


Constructor & Destructor Documentation

Destructor.

Definition at line 192 of file SigHandlersList.h.

References erase(), m_set, ASSA::SIGHAND, and trace_with_mask.

{
    trace_with_mask("SigHandlersList::~SigHandlersList", SIGHAND);

    erase ();
    delete m_set;
    m_set = NULL;
}
ASSA::SigHandlersList::SigHandlersList ( ) [inline, protected]

Definition at line 182 of file SigHandlersList.h.

References m_set, ASSA::SIGHAND, and trace_with_mask.

Referenced by instance().

    : m_seen_cfh (false), m_cfhp (NULL)
{
    trace_with_mask("SigHandlersList::SigHandlersList", SIGHAND);

    m_set = new set_t;
}

Member Function Documentation

Return an iterator pointing to the beginning of the list.

Definition at line 300 of file SigHandlersList.h.

References m_set, ASSA::SIGHAND, and trace_with_mask.

Referenced by ASSA::SigHandlers::dispatch().

{
    trace_with_mask("SigHandlersList::begin()", SIGHAND);

    return m_set->begin ();
}

Save 3rd party C function handler to remember.

Parameters:
cfp_New 3rd party C function handler. If it is NULL, then seen_cfh flag is set to FALSE.
Returns:
old 3rd party C function handler.

Definition at line 328 of file SigHandlersList.h.

References m_cfhp, m_seen_cfh, ASSA::SIGHAND, and trace_with_mask.

Referenced by ASSA::SigHandlers::install(), and ASSA::SigHandlers::remove().

{
    trace_with_mask("SigHandlersList::cfunc_handler", SIGHAND);
    
    CFUNC_Handler* old_cfhp = m_cfhp;
    m_cfhp = cfhp_;
    m_seen_cfh = cfhp_ == NULL ? false : true;
    return old_cfhp;
}

Retrieve pointer to 3rd party C function handler.

Returns:
3rd party C function handler.

Definition at line 340 of file SigHandlersList.h.

References m_cfhp, ASSA::SIGHAND, and trace_with_mask.

{
    trace_with_mask("SigHandlersList::cfunc_handler", SIGHAND);
    
    return m_cfhp;
}
bool ASSA::SigHandlersList::empty ( ) const [inline]

Is list empty.

Definition at line 219 of file SigHandlersList.h.

References m_set, ASSA::SIGHAND, and trace_with_mask.

{
    trace_with_mask("SigHandlersList::empty", SIGHAND);

    // true if map is empty, false otherwise

    return m_set->empty ();
}

Return an iterator pointing to the end of the list.

Definition at line 309 of file SigHandlersList.h.

References m_set, ASSA::SIGHAND, and trace_with_mask.

Referenced by ASSA::SigHandlers::dispatch(), and ASSA::SigHandlers::remove().

{
    trace_with_mask("SigHandlersList::end", SIGHAND);

    return m_set->end ();
}
void ASSA::SigHandlersList::erase ( const key_type  key_) [inline]

Find and remove event handler key_ from the list.

Definition at line 270 of file SigHandlersList.h.

References m_set, ASSA::SIGHAND, and trace_with_mask.

Referenced by ASSA::SigHandlers::dispatch(), ASSA::SigHandlers::install(), and ASSA::SigHandlers::remove().

{
    // return number of erased elements
    trace_with_mask("SigHandlersList::erase(key_)", SIGHAND);
    
    m_set->erase (key_);
}
void ASSA::SigHandlersList::erase ( iterator  it_) [inline]

Remove an event handler pointed by iterator it_ from the list.

Definition at line 290 of file SigHandlersList.h.

References m_set, ASSA::SIGHAND, and trace_with_mask.

{
    // erase element pointed by iterator
    trace_with_mask("SigHandlersList::erase(it_)", SIGHAND);

    m_set->erase(it_);
}
void ASSA::SigHandlersList::erase ( ) [inline]

Empty event handlers' list.

Definition at line 280 of file SigHandlersList.h.

References m_set, ASSA::SIGHAND, and trace_with_mask.

Referenced by ~SigHandlersList().

{
    // empty the map
    trace_with_mask("SigHandlersList::erase(void)", SIGHAND);

    m_set->erase (m_set->begin(), m_set->end());
}

Find event handler by its pointer key_.

Returns:
Iterator to the element.

Definition at line 318 of file SigHandlersList.h.

References m_set, ASSA::SIGHAND, and trace_with_mask.

Referenced by ASSA::SigHandlers::remove().

{
    trace_with_mask("SigHandlersList::find", SIGHAND);

    return m_set->find (key_);
}
bool ASSA::SigHandlersList::insert ( data_type  data_) [inline]

Add an event handler data_ to the list.

Returns:
TRUE on success, FALSE on error.

Definition at line 241 of file SigHandlersList.h.

References m_set, ASSA::SIGHAND, and trace_with_mask.

Referenced by ASSA::SigHandlers::install().

{
    trace_with_mask("SigHandlersList::insert", SIGHAND);

    /*---
      Insert 'eh_' into the set. set::insert() returns a 'pair' object.

      If the set doesn't contain an element that matches 'eh_', insert a 
      copy of 'eh_' and returns a 'pair' whose first element is an
      iterator positioned at the new element and second element is
      'true'.

      If the set already contains an element that matches 'eh_', returns
      a pair whose first element is an iterator positioned at the
      existing element and second element is false!
      ---*/

    set_t::const_iterator it = m_set->find (eh_);

    /*--- Not in the set ---*/
    if (it == m_set->end ()) { 
        return (m_set->insert (eh_)).second;
    }
    /*--- Already in the set ---*/
    return true;
}
SigHandlersList * ASSA::SigHandlersList::instance ( int  signum_) [inline, static]

Retrieve a pointer to the list of event handlers listening to signum_ signal delivery.

Definition at line 203 of file SigHandlersList.h.

References ASSA::APP, DL, m_instance, ASSA::SIGHAND, SigHandlersList(), and trace_with_mask.

Referenced by ASSA::SigHandlers::dispatch(), ASSA::SigHandlers::install(), and ASSA::SigHandlers::remove().

{
    trace_with_mask("SigHandlersList::instance", SIGHAND);

    DL((APP, "m_instance[%d] = 0x%x\n", signum_,
        SigHandlersList::m_instance[signum_]));

    if (SigHandlersList::m_instance[signum_] == 0) {
        DL((APP, "new SigHandlersList allocated\n"));
        SigHandlersList::m_instance[signum_] = new SigHandlersList();
    }
    return SigHandlersList::m_instance[signum_];
}
SigHandlersList& ASSA::SigHandlersList::operator= ( const SigHandlersList map_) [protected]
void ASSA::SigHandlersList::seen_cfunc_handler ( bool  ft_) [inline]

Indicate whether 3rd party C function handler was installed.

Parameters:
ft_TRUE if was, FALSE if not.

Definition at line 349 of file SigHandlersList.h.

References m_seen_cfh, ASSA::SIGHAND, and trace_with_mask.

Referenced by ASSA::SigHandlers::install(), and ASSA::SigHandlers::remove().

{
    trace_with_mask("SigHandlersList::seen_cfunc_handler", SIGHAND);

    m_seen_cfh = ft_;
}
Returns:
TRUE if we've seen 3rd party C function handler; FALSE otherwise.

Definition at line 358 of file SigHandlersList.h.

References m_seen_cfh, ASSA::SIGHAND, and trace_with_mask.

{
    trace_with_mask("SigHandlersList::seen_cfunc_handler", SIGHAND);

    return m_seen_cfh;
}
size_t ASSA::SigHandlersList::size ( ) const [inline]

Size of the list.

Definition at line 230 of file SigHandlersList.h.

References m_set, ASSA::SIGHAND, and trace_with_mask.

Referenced by ASSA::SigHandlers::install(), and ASSA::SigHandlers::remove().

{
    trace_with_mask("SigHandlersList::size", SIGHAND);

    // return number of elements in the map

    return m_set->size ();
}

Member Data Documentation

Pointer to the 3rd party signal handler in the set.

Definition at line 173 of file SigHandlersList.h.

Referenced by cfunc_handler().

Static map of signal numbers to SigHandlerLists.

Definition at line 159 of file SigHandlersList.h.

Referenced by instance().

If true this flag indicates that 3rd party event handler has already been installed prior taking control by SigHandlers manager.

Definition at line 169 of file SigHandlersList.h.

Referenced by cfunc_handler(), and seen_cfunc_handler().

Set of all event handlers registered for this signal.

Definition at line 163 of file SigHandlersList.h.

Referenced by begin(), empty(), end(), erase(), find(), insert(), SigHandlersList(), size(), and ~SigHandlersList().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines