CMS 3D CMS Logo

Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes

edm::MessageSender Class Reference

#include <MessageSender.h>

List of all members.

Public Member Functions

 MessageSender (ELseverityLevel const &sev, ELstring const &id, bool verbatim)
 MessageSender (ELseverityLevel const &sev, ELstring const &id)
template<class T >
MessageSenderoperator<< (T const &t)
 ~MessageSender ()

Static Public Attributes

static bool errorSummaryIsBeingKept = false
static std::map
< ErrorSummaryMapKey, unsigned
int > 
errorSummaryMap
static bool freshError = false

Private Member Functions

 MessageSender (MessageSender const &)
void operator= (MessageSender const &)

Private Attributes

ErrorObjerrorobj_p

Detailed Description

Definition at line 26 of file MessageSender.h.


Constructor & Destructor Documentation

MessageSender::MessageSender ( ELseverityLevel const &  sev,
ELstring const &  id,
bool  verbatim 
)

Definition at line 26 of file MessageSender.cc.

: errorobj_p( new ErrorObj(sev,id,verbatim) )
{
  //std::cout << "MessageSender ctor; new ErrorObj at: " << errorobj_p << '\n';
}
MessageSender::MessageSender ( ELseverityLevel const &  sev,
ELstring const &  id 
)

Definition at line 34 of file MessageSender.cc.

: errorobj_p( new ErrorObj(sev,id,false) )
{
  //std::cout << "MessageSender ctor; new ErrorObj at: " << errorobj_p << '\n';
}
MessageSender::~MessageSender ( )

Definition at line 45 of file MessageSender.cc.

References benchmark_cfg::cerr, drop, edm::ELwarning, errorobj_p, errorSummaryIsBeingKept, errorSummaryMap, freshError, i, edm::ELextendedID::id, edm::MessageDrop::instance(), combine::key, edm::MessageLoggerQ::MLqLOG(), edm::ELextendedID::module, edm::MessageDrop::moduleContext(), edm::MessageDrop::runEvent, edm::ErrorObj::setContext(), edm::ErrorObj::setModule(), edm::ELextendedID::severity, and edm::ErrorObj::xid().

{
  try 
    {
      //std::cout << "MessageSender dtor; ErrorObj at: " << errorobj_p << '\n';

      // surrender ownership of our ErrorObj, transferring ownership
      // (via the intermediate MessageLoggerQ) to the MessageLoggerScribe
      // that will (a) route the message text to its destination(s)
      // and will then (b) dispose of the ErrorObj
      
      MessageDrop * drop = MessageDrop::instance();
      if (drop) {
        errorobj_p->setModule(drop->moduleContext());           // change log 
        errorobj_p->setContext(drop->runEvent);
      } 
#ifdef TRACE_DROP
      if (!drop) std::cerr << "MessageSender::~MessageSender() - Null drop pointer \n";
#endif
                                                                // change log 1
      if ( errorSummaryIsBeingKept && 
           errorobj_p->xid().severity >= ELwarning ) 
      {                         
        ELextendedID const & xid = errorobj_p->xid();
        ErrorSummaryMapKey key (xid.id, xid.module, xid.severity);
        ErrorSummaryMapIterator i = errorSummaryMap.find(key);
        if (i != errorSummaryMap.end()) {
          ++(i->second);  // same as ++errorSummaryMap[key]
        } else {
          errorSummaryMap[key] = 1;
        }
        freshError = true;
      }
      
      MessageLoggerQ::MLqLOG(errorobj_p);
    }
  catch ( ... )
    {
      // nothing to do
      
      // for test that removal of thread-involved static works, 
      // simply throw here, then run in trivial_main in totalview
      // and Next or Step so that the exception would be detected.
      // That test has been done 12/14/07.
    }
}
edm::MessageSender::MessageSender ( MessageSender const &  ) [private]

Member Function Documentation

template<class T >
MessageSender& edm::MessageSender::operator<< ( T const &  t) [inline]

Definition at line 40 of file MessageSender.h.

References matplotRender::t.

  {
    (*errorobj_p) << t;
    return *this;
  }
void edm::MessageSender::operator= ( MessageSender const &  ) [private]

Member Data Documentation

Definition at line 57 of file MessageSender.h.

Referenced by ~MessageSender().

std::map< ErrorSummaryMapKey, unsigned int > MessageSender::errorSummaryMap [static]
bool MessageSender::freshError = false [static]