MsgHandler Class Reference

#include <MsgHandler.h>


Detailed Description

MsgHandler

Definition at line 57 of file MsgHandler.h.


Public Types

enum  MsgType { MT_MESSAGE, MT_WARNING, MT_ERROR }

Public Member Functions

void addRetriever (OutputDevice *retriever)
 Adds a further retriever to the instance responsible for a certain msg type.
void beginProcessMsg (std::string msg, bool addType=true)
 Begins a process information.
void clear ()
 Clears information whether an error occured previously.
void endProcessMsg (std::string msg)
 Ends a process information.
void inform (std::string msg, bool addType=true)
 adds a new error to the list
template<class T>
MsgHandleroperator<< (const T &t)
 Generic output operator.
void progressMsg (std::string msg, bool addType=true)
 Writes a progress message.
void removeRetriever (OutputDevice *retriever)
 Removes the retriever from the.
void report2cerr (bool value)
 Sets the information whether stderr shall be used as output device.
void report2cout (bool value)
 Sets the information whether stdout shall be used as output device.
bool wasInformed () const
 Returns the information whether any messages were added.

Static Public Member Functions

static void assignLock (AbstractMutex *lock)
 Sets the lock to use The lock will not be deleted.
static void cleanupOnEnd ()
 Removes pending handler.
static MsgHandlergetErrorInstance ()
 Returns the instance to add errors to.
static MsgHandlergetMessageInstance ()
 Returns the instance to add normal messages to.
static MsgHandlergetWarningInstance ()
 Returns the instance to add warnings to.
static void initOutputOptions (bool gui=false)

Protected Member Functions

std::string build (const std::string &msg, bool addType)
 Builds the string which includes the mml-message type.

Private Types

typedef std::vector
< OutputDevice * > 
RetrieverVector
 Definition of the list of retrievers to inform.

Private Member Functions

 MsgHandler (const MsgHandler &s)
 MsgHandler (MsgType type)
 standard constructor
MsgHandleroperator= (const MsgHandler &s)
 ~MsgHandler ()
 destructor

Private Attributes

bool myReport2CERR
 Information whether stderr shall be used as output device, too.
bool myReport2COUT
 Information whether stdout shall be used as output device, too.
RetrieverVector myRetrievers
 The list of retrievers that shall be informed about new messages or errors.
MsgType myType
 The type of the instance.
bool myWasInformed
 information wehther an error occured at all

Static Private Attributes

static bool myAmProcessingProcess = false
 Information whether a process information is printed to cout.
static MsgHandlermyErrorInstance = 0
 The instance to handle errors.
static AbstractMutexmyLock = 0
 The lock if any has to be used The lock will not be deleted.
static MsgHandlermyMessageInstance = 0
 The instance to handle normal messages.
static MsgHandlermyWarningInstance = 0
 The instance to handle warnings.

Member Typedef Documentation

typedef std::vector<OutputDevice*> MsgHandler::RetrieverVector [private]

Definition of the list of retrievers to inform.

Definition at line 208 of file MsgHandler.h.


Member Enumeration Documentation

An enumeration to differ between different types of messages (errors, warning and information)

Enumerator:
MT_MESSAGE  The message is only something to show.
MT_WARNING  The message is a warning.
MT_ERROR  The message is an error.

Definition at line 64 of file MsgHandler.h.

00064                  {
00066         MT_MESSAGE,
00068         MT_WARNING,
00070         MT_ERROR
00071     };


Constructor & Destructor Documentation

MsgHandler::MsgHandler ( MsgType  type  )  [private]

standard constructor

Definition at line 365 of file MsgHandler.cpp.

Referenced by getErrorInstance(), getMessageInstance(), and getWarningInstance().

00366         : myType(type), myWasInformed(false), myReport2COUT(type==MT_MESSAGE),
00367         myReport2CERR(type!=MT_MESSAGE) {}

MsgHandler::~MsgHandler (  )  [private]

destructor

Definition at line 370 of file MsgHandler.cpp.

00370                         {
00371 }

MsgHandler::MsgHandler ( const MsgHandler s  )  [private]

invalid copy constructor


Member Function Documentation

void MsgHandler::addRetriever ( OutputDevice retriever  ) 

Adds a further retriever to the instance responsible for a certain msg type.

Definition at line 225 of file MsgHandler.cpp.

References OptionsCont::exists(), OptionsCont::getBool(), OptionsCont::getOptions(), AbstractMutex::lock(), MT_MESSAGE, MT_WARNING, myLock, myRetrievers, myType, and AbstractMutex::unlock().

Referenced by GUILoadThread::GUILoadThread(), GUIRunThread::init(), initOutputOptions(), and GUILoadThread::run().

00225                                                 {
00226     if (myLock!=0) {
00227         myLock->lock();
00228     }
00229     RetrieverVector::iterator i =
00230         find(myRetrievers.begin(), myRetrievers.end(), retriever);
00231     if (i==myRetrievers.end()) {
00232         myRetrievers.push_back(retriever);
00233     }
00234     // check whether the message shall be generated
00235     if (myType==MT_WARNING) {
00236         gSuppressWarnings = OptionsCont::getOptions().exists("suppress-warnings")
00237                             ? OptionsCont::getOptions().getBool("suppress-warnings")
00238                             : false;
00239     } else if (myType==MT_MESSAGE) {
00240         gSuppressMessages = false;
00241     }
00242     if (myLock!=0) {
00243         myLock->unlock();
00244     }
00245 }

void MsgHandler::assignLock ( AbstractMutex lock  )  [static]

Sets the lock to use The lock will not be deleted.

Definition at line 381 of file MsgHandler.cpp.

References myLock.

Referenced by main().

00381                                           {
00382     assert(myLock==0);
00383     myLock = lock ;
00384 }

void MsgHandler::beginProcessMsg ( std::string  msg,
bool  addType = true 
)

Begins a process information.

When a longer action is started, this method should be used to inform the user about it. There will be no newline printed, but the message handler will be informed that a process message has been begun. If an error occurs, a newline will be printed. After the action has been performed, use endProcessMsg to inform the user about it.

Definition at line 156 of file MsgHandler.cpp.

References build(), AbstractMutex::lock(), myAmProcessingProcess, myLock, myReport2CERR, myReport2COUT, myRetrievers, myWasInformed, and AbstractMutex::unlock().

Referenced by NLBuilder::build(), RODFNet::computeTypes(), NLBuilder::load(), NIImporter_VISUM::load(), NIImporter_ArcView::load(), OptionsIO::loadConfiguration(), loadDistricts(), PCNetProjectionLoader::loadIfSet(), PCLoaderXML::loadIfSet(), PCLoaderVisum::loadIfSet(), PCLoaderOSM::loadIfSet(), PCLoaderArcView::loadIfSet(), ROLoader::loadNet(), NIImporter_SUMO::loadNetwork(), NIImporter_RobocupRescue::loadNetwork(), NIImporter_OpenStreetMap::loadNetwork(), NIImporter_OpenDrive::loadNetwork(), NIImporter_DlrNavteq::loadNetwork(), PCLoaderDlrNavteq::loadPOIFiles(), PCLoaderDlrNavteq::loadPolyFiles(), ROLoader::loadWeights(), NILoader::loadXMLType(), readDetectorFlows(), readDetectors(), readO(), readV(), and startComputation().

00156                                                        {
00157     if (myLock!=0) {
00158         myLock->lock();
00159     }
00160     msg = build(msg, addType);
00161     // report to std::cout if wished
00162     if (myReport2COUT) {
00163         std::cout << msg << ' ';
00164         std::cout.flush();
00165         myAmProcessingProcess = true;
00166     }
00167     // report to std::cerr if wished
00168     if (myReport2CERR) {
00169         std::cerr << msg << ' ';
00170         std::cerr.flush();
00171         myAmProcessingProcess = true;
00172     }
00173     // inform all other receivers
00174     for (RetrieverVector::iterator i=myRetrievers.begin(); i!=myRetrievers.end(); i++) {
00175         (*i)->inform(msg + " ");
00176         myAmProcessingProcess = true;
00177     }
00178     // set the information that something occured
00179     myWasInformed = true;
00180     if (myLock!=0) {
00181         myLock->unlock();
00182     }
00183 }

std::string MsgHandler::build ( const std::string &  msg,
bool  addType 
) [inline, protected]

Builds the string which includes the mml-message type.

Definition at line 151 of file MsgHandler.h.

References MT_ERROR, MT_MESSAGE, MT_WARNING, and myType.

Referenced by beginProcessMsg(), inform(), and progressMsg().

00151                                                                {
00152         if (addType) {
00153             switch (myType) {
00154             case MT_MESSAGE:
00155                 break;
00156             case MT_WARNING:
00157                 return "Warning: " + msg;
00158                 break;
00159             case MT_ERROR:
00160                 return "Error: " + msg;
00161                 break;
00162             default:
00163                 break;
00164             }
00165         }
00166         return msg;
00167     }

void MsgHandler::cleanupOnEnd (  )  [static]

Removes pending handler.

Definition at line 349 of file MsgHandler.cpp.

References AbstractMutex::lock(), myErrorInstance, myLock, myMessageInstance, myWarningInstance, and AbstractMutex::unlock().

Referenced by SystemFrame::close(), and GUIRunThread::deleteSim().

00349                          {
00350     if (myLock!=0) {
00351         myLock->lock();
00352     }
00353     delete myMessageInstance;
00354     myMessageInstance = 0;
00355     delete myWarningInstance;
00356     myWarningInstance = 0;
00357     delete myErrorInstance;
00358     myErrorInstance = 0;
00359     if (myLock!=0) {
00360         myLock->unlock();
00361     }
00362 }

void MsgHandler::clear (  ) 

Clears information whether an error occured previously.

Definition at line 213 of file MsgHandler.cpp.

References AbstractMutex::lock(), myLock, myWasInformed, and AbstractMutex::unlock().

Referenced by loadJTRDefinitions(), main(), NBLoadedTLDef::myCompute(), and GUILoadThread::run().

00213                   {
00214     if (myLock!=0) {
00215         myLock->lock();
00216     }
00217     myWasInformed = false;
00218     if (myLock!=0) {
00219         myLock->unlock();
00220     }
00221 }

void MsgHandler::endProcessMsg ( std::string  msg  ) 

Ends a process information.

Definition at line 187 of file MsgHandler.cpp.

References AbstractMutex::lock(), myAmProcessingProcess, myLock, myReport2CERR, myReport2COUT, myRetrievers, myWasInformed, and AbstractMutex::unlock().

Referenced by NLBuilder::build(), RODFNet::computeTypes(), PCLoaderArcView::load(), NLBuilder::load(), NIImporter_VISUM::load(), NIImporter_ArcView::load(), OptionsIO::loadConfiguration(), loadDistricts(), PCNetProjectionLoader::loadIfSet(), PCLoaderXML::loadIfSet(), PCLoaderVisum::loadIfSet(), PCLoaderOSM::loadIfSet(), PCLoaderArcView::loadIfSet(), ROLoader::loadNet(), NIImporter_SUMO::loadNetwork(), NIImporter_RobocupRescue::loadNetwork(), NIImporter_OpenStreetMap::loadNetwork(), NIImporter_OpenDrive::loadNetwork(), NIImporter_DlrNavteq::loadNetwork(), PCLoaderDlrNavteq::loadPOIFiles(), PCLoaderDlrNavteq::loadPolyFiles(), ROLoader::loadWeights(), NILoader::loadXMLType(), readDetectorFlows(), readDetectors(), readO(), readV(), and startComputation().

00187                                        {
00188     if (myLock!=0) {
00189         myLock->lock();
00190     }
00191     // report to std::cout if wished
00192     if (myReport2COUT) {
00193         std::cout << msg << std::endl;
00194     }
00195     // report to std::cerr if wished
00196     if (myReport2CERR) {
00197         std::cerr << msg << std::endl;
00198     }
00199     // inform all other receivers
00200     for (RetrieverVector::iterator i=myRetrievers.begin(); i!=myRetrievers.end(); i++) {
00201         (*i)->inform(msg);
00202     }
00203     // set the information that something occured
00204     myWasInformed = true;
00205     myAmProcessingProcess = false;
00206     if (myLock!=0) {
00207         myLock->unlock();
00208     }
00209 }

MsgHandler * MsgHandler::getErrorInstance (  )  [static]

Returns the instance to add errors to.

Definition at line 85 of file MsgHandler.cpp.

References MsgHandler(), MT_ERROR, and myErrorInstance.

Referenced by ODMatrix::add(), NLHandler::addDistrict(), NLHandler::addDistrictEdge(), NLHandler::addE1Detector(), NLHandler::addE2Detector(), RONet::addEdge(), NLHandler::addEdgeLaneMeanData(), ROLoader::EdgeFloatTimeLineRetriever_EdgeWeight::addEdgeWeight(), ROLoader::EdgeFloatTimeLineRetriever_EdgeTravelTime::addEdgeWeight(), NLBuilder::EdgeFloatTimeLineRetriever_EdgeTravelTime::addEdgeWeight(), NLBuilder::EdgeFloatTimeLineRetriever_EdgeEffort::addEdgeWeight(), ROJTREdge::addFollowerProbability(), NLHandler::addIncomingLanes(), NIImporter_SUMO::addJunction(), NLHandler::addLaneShape(), NLHandler::addLogicItem(), RONet::addNode(), NLHandler::addPhase(), NLHandler::addPOI(), NLHandler::addRouteProbeDetector(), NLHandler::addSource(), NIImporter_SUMO::addSuccEdge(), NLHandler::addSuccLane(), ROJTRTurnDefLoader::addToEdge(), NLHandler::addTrigger(), RONet::addVehicle(), RONet::addVehicleType(), NLHandler::addVTypeProbeDetector(), NLHandler::addWAUTJunction(), NLHandler::addWAUTSwitch(), SUMOVehicleParameter::arrivallaneValidate(), SUMOVehicleParameter::arrivalposValidate(), SUMOVehicleParameter::arrivalspeedValidate(), NLHandler::beginE3Detector(), NLHandler::beginEdgeParsing(), ROJTRTurnDefLoader::beginFromEdge(), NLBuilder::build(), RORouteDef_Complete::buildCurrentRoute(), RODFDetector::buildDestinationDistribution(), NIImporter_VISUM::buildDistrictNode(), buildNetwork(), NBNodeCont::buildOffRamp(), NBNodeCont::buildOnRamp(), NLTriggerBuilder::buildVaporizer(), OptionsCont::checkDependingSuboptions(), NIImporter_VISUM::checkNodes(), ROFrame::checkOptions(), checkOptions(), MSFrame::checkOptions(), MSTLLogicControl::TLSLogicVariants::checkOriginalTLS(), OptionsParser::checkParameter(), NLHandler::closeEdge(), NLHandler::closeJunction(), NLHandler::closeLane(), MSRouteHandler::closeRouteDistribution(), NLHandler::closeSuccLane(), RORDLoader_SUMOBase::closeVehicle(), MSRouteHandler::closeVehicleTypeDistribution(), NLHandler::closeWAUT(), ROJTRRouter::compute(), DijkstraRouterTTBase< E, V, PF >::compute(), DijkstraRouterEffortBase< E, V, PF >::compute(), RONet::computeRoute(), NIImporter_OpenDrive::computeShapes(), GUIRunThread::deleteSim(), SUMOVehicleParameter::departlaneValidate(), SUMOVehicleParameter::departposValidate(), SUMOVehicleParameter::departspeedValidate(), NIVissimTL::dict_SetSignals(), GUISUMOAbstractView::drawDecals(), SUMOSAXAttributes::emitEmptyError(), GeomConvHelper::emitError(), SUMOSAXAttributes::emitFormatError(), SUMOSAXAttributes::emitUngivenError(), NLHandler::endE3Detector(), OptionsLoader::error(), OptionsLoader::fatalError(), RORDLoader_TripDefs::getEdge(), NIImporter_VISUM::getNamedEdge(), NIImporter_VISUM::getNamedEdgeContinuating(), NIImporter_VISUM::getNamedNode(), XMLSubSys::getSAXReader(), GUILoadThread::GUILoadThread(), GUIRunThread::init(), GeoConvHelper::init(), GUILoadThread::initOptions(), initOutputOptions(), NIXMLEdgesHandler::insertNodeChecking(), NIImporter_OpenStreetMap::insertNodeChecking(), MSLane::isEmissionSuccess(), MSMeanData_Net::MSLaneMeanDataValues::isStillActive(), MSMeanData_HBEFA::MSLaneMeanDataValues::isStillActive(), MSMeanData_Harmonoise::MSLaneMeanDataValues::isStillActive(), OptionsCont::isUsableFileList(), PCLoaderVisum::load(), PCLoaderArcView::load(), NIImporter_VISUM::load(), NIImporter_Vissim::load(), NIImporter_ArcView::load(), loadDistricts(), NIImporter_RobocupRescue::loadEdges(), PCLoaderOSM::loadIfSet(), loadJTRDefinitions(), NIImporter_SUMO::loadNetwork(), NIImporter_RobocupRescue::loadNetwork(), NIImporter_OpenStreetMap::loadNetwork(), NIImporter_OpenDrive::loadNetwork(), NIImporter_ArcView::loadNetwork(), PCLoaderDlrNavteq::loadPOIFile(), PCLoaderDlrNavteq::loadPolyFile(), NILoader::loadXMLType(), main(), ROLoader::makeSingleStep(), GUIRunThread::makeStep(), RORDLoader_SUMOBase::myCharacters(), PCLoaderXML::myCharacters(), RORDLoader_TripDefs::myEndElement(), NLHandler::myEndElement(), NIXMLEdgesHandler::myEndElement(), NIImporter_SUMO::myEndElement(), RORDGenerator_ODAmounts::myEndFlowAmountDef(), RORDLoader_TripDefs::myStartElement(), PCTypeDefHandler::myStartElement(), PCLoaderXML::myStartElement(), PCLoaderOSM::EdgesHandler::myStartElement(), NLHandler::myStartElement(), NIXMLTypesHandler::myStartElement(), NIXMLNodesHandler::myStartElement(), NIXMLEdgesHandler::myStartElement(), NIXMLConnectionsHandler::myStartElement(), NIImporter_OpenStreetMap::EdgesHandler::myStartElement(), NIImporter_OpenStreetMap::NodesHandler::myStartElement(), MSRouteHandler::myStartElement(), MSLaneSpeedTrigger::myStartElement(), MSCalibrator::MSCalibrator_FileTriggeredChild::myStartElement(), GUIDialog_Breakpoints::onCmdLoad(), NLHandler::openJunction(), ROLoader::openTypedRoutes(), NLHandler::openWAUT(), OptionsParser::parse(), NIVissimSingleTypeParser_Simdauer::parse(), NIVissimSingleTypeParser_Signalgruppendefinition::parse(), NIVissimSingleTypeParser_Querverkehrsstoerungsdefinition::parse(), NIVissimSingleTypeParser_Lichtsignalanlagendefinition::parse(), NIImporter_VISUM::parse_AreaSubPartElement(), NIImporter_VISUM::parse_Connectors(), NIImporter_VISUM::parse_Districts(), NIImporter_VISUM::parse_EdgePolys(), NIImporter_VISUM::parse_Edges(), NIImporter_VISUM::parse_Lanes(), NIImporter_VISUM::parse_LanesConnections(), NIImporter_VISUM::parse_Nodes(), NIImporter_VISUM::parse_Point(), NIImporter_VISUM::parse_SignalGroups(), NIImporter_VISUM::parse_Turns(), RGBColor::parseColorReporting(), RONetHandler::parseConnectedEdge(), ODDistrictHandler::parseConnection(), NIXMLConnectionsHandler::parseConnection(), RONetHandler::parseDistrictEdge(), RONetHandler::parseEdge(), SUMOVehicleParserHelper::parseEmissionClass(), SUMOVehicleParserHelper::parseGuiShape(), NIXMLConnectionsHandler::parseLaneBound(), NIXMLEdgesHandler::parseSplitLanes(), SUMOVehicleParserHelper::parseVehicleClass(), OptionsParser::processNonBooleanSingleSwitch(), ROLoader::processRoutesStepWise(), OptionsCont::reportDoubleSetting(), GUILoadThread::run(), XMLSubSys::runParser(), OptionsCont::set(), NBEdge::setConnection(), SUMOSAXAttributes::setIDFromAttributes(), NLHandler::setKey(), NLHandler::setLaneNumber(), NLHandler::setOffset(), NLHandler::setRequestSize(), NLHandler::setSubKey(), OptionsLoader::setValue(), RORDLoader_SUMOBase::startAlternative(), RORDLoader_SUMOBase::startRoute(), GUILoadThread::submitEndAndCleanup(), traci::TraCIServer::TraCIServer(), NIXMLEdgesHandler::tryGetShape(), SAXWeightsHandler::tryParse(), GUIEmitter::GUIEmitterChild_UserTriggeredChild::wrappedExecute(), RODFDetector::writeEmitterDefinition(), TraCIServerAPIHelper::writeStatusCmd(), and traci::TraCIServer::writeStatusCmd().

00085                              {
00086     if (myErrorInstance==0) {
00087         myErrorInstance = new MsgHandler(MT_ERROR);
00088     }
00089     return myErrorInstance;
00090 }

MsgHandler * MsgHandler::getMessageInstance (  )  [static]

Returns the instance to add normal messages to.

Definition at line 67 of file MsgHandler.cpp.

References MsgHandler(), MT_MESSAGE, and myMessageInstance.

Referenced by NLBuilder::build(), RODFNet::computeTypes(), GUIRunThread::deleteSim(), GUIRunThread::init(), initOutputOptions(), NIVissimConnectionCluster::joinBySameEdges(), PCLoaderArcView::load(), NLBuilder::load(), NIImporter_VISUM::load(), NIImporter_ArcView::load(), OptionsIO::loadConfiguration(), loadDistricts(), PCNetProjectionLoader::loadIfSet(), PCLoaderXML::loadIfSet(), PCLoaderVisum::loadIfSet(), PCLoaderOSM::loadIfSet(), PCLoaderArcView::loadIfSet(), ROLoader::loadNet(), NIImporter_SUMO::loadNetwork(), NIImporter_RobocupRescue::loadNetwork(), NIImporter_OpenStreetMap::loadNetwork(), NIImporter_OpenDrive::loadNetwork(), NIImporter_DlrNavteq::loadNetwork(), NIImporter_RobocupRescue::loadNodes(), PCLoaderDlrNavteq::loadPOIFiles(), PCLoaderDlrNavteq::loadPolyFiles(), ROLoader::loadWeights(), NILoader::loadXMLType(), main(), NIXMLEdgesHandler::myStartElement(), ROLoader::openRoutes(), OptionsCont::processMetaOptions(), ROLoader::processRoutesStepWise(), readDetectorFlows(), readDetectors(), readO(), readV(), RODFNet::removeEmptyDetectors(), RODFNet::reportEmptyDetectors(), GUILoadThread::run(), startComputation(), GUILoadThread::submitEndAndCleanup(), traci::TraCIServer::TraCIServer(), ODMatrix::write(), and ROLoader::writeStats().

00067                                {
00068     if (myMessageInstance==0) {
00069         myMessageInstance = new MsgHandler(MT_MESSAGE);
00070     }
00071     return myMessageInstance;
00072 }

MsgHandler * MsgHandler::getWarningInstance (  )  [static]

Returns the instance to add warnings to.

Definition at line 76 of file MsgHandler.cpp.

References MsgHandler(), MT_WARNING, and myWarningInstance.

Referenced by ODMatrix::add(), NLHandler::addE1Detector(), NLHandler::addE2Detector(), NLHandler::addJunctionShape(), NLHandler::addLane(), NLHandler::addPhase(), NLHandler::addPoly(), NIVissimTL::NIVissimTLSignal::addTo(), NLHandler::beginE3Detector(), RORouteDef_Complete::buildCurrentRoute(), NIVissimConnection::buildEdgeConnections(), NIVissimEdge::buildNBEdge(), NBNodeCont::buildOffRamp(), NBNodeCont::buildOnRamp(), NLTriggerBuilder::buildTrigger(), GUISUMOAbstractView::checkSnapshots(), ROJTRRouter::compute(), NBNode::computeInternalLaneShape(), NBEdge::computeLaneShape(), NBEdge::computeLaneShapes(), NBNode::computeLogic(), NBNode::computeNodeShape(), RONet::computeRoute(), RODFNet::computeRoutesFor(), GUIRunThread::deleteSim(), MSLane::detectCollisions(), NIVissimDistrictConnection::dict_BuildDistricts(), GUISUMOAbstractView::drawDecals(), MSE3Collector::enter(), MSInductLoop::enterDetectorByMove(), NLTriggerBuilder::getLane(), NIVissimDistrictConnection::getMeanSpeed(), OptionsCont::getStringVector(), NBNodeCont::guessRamps(), GUIRunThread::init(), initOutputOptions(), RODFNet::isDestination(), RODFNet::isFalseSource(), RODFNet::isSource(), OptionsCont::isUsableFileList(), MSE3Collector::leave(), PCLoaderVisum::load(), PCLoaderArcView::load(), PCLoaderOSM::loadIfSet(), PCLoaderDlrNavteq::loadPolyFile(), main(), MSLane::moveCritical(), ROJTRTurnDefLoader::myCharacters(), PCLoaderXML::myCharacters(), NLHandler::myCharacters(), MSRouteHandler::myCharacters(), NBLoadedTLDef::myCompute(), NIXMLEdgesHandler::myEndElement(), RODFDetectorHandler::myStartElement(), PCLoaderXML::myStartElement(), NIXMLTypesHandler::myStartElement(), NIXMLEdgesHandler::myStartElement(), NIXMLConnectionsHandler::myStartElement(), NIImporter_OpenDrive::myStartElement(), NIVissimAbstractEdge::NIVissimAbstractEdge(), NIVissimSingleTypeParser_Signalgruppendefinition::parse(), NIImporter_VISUM::parse_Connectors(), NLTriggerBuilder::parseAndBuildBusStop(), NLTriggerBuilder::parseAndBuildLaneEmitTrigger(), NLTriggerBuilder::parseAndBuildLaneSpeedTrigger(), NLTriggerBuilder::parseAndBuildRerouter(), SUMOSAXAttributes::parseStringVector(), parseVehicleClasses(), RODFDetFlowLoader::read(), MSE3Collector::removeOnTripEnd(), NIVissimEdge::reportUnsetSpeeds(), GUILoadThread::run(), Option_IntVector::set(), MSLane::setCritical(), GUILoadThread::submitEndAndCleanup(), traci::TraCIServer::TraCIServer(), and SUMOSAXHandler::warning().

00076                                {
00077     if (myWarningInstance==0) {
00078         myWarningInstance = new MsgHandler(MT_WARNING);
00079     }
00080     return myWarningInstance;
00081 }

void MsgHandler::inform ( std::string  msg,
bool  addType = true 
)

adds a new error to the list

Definition at line 94 of file MsgHandler.cpp.

References build(), AbstractMutex::lock(), myAmProcessingProcess, myLock, myReport2CERR, myReport2COUT, myRetrievers, myWasInformed, and AbstractMutex::unlock().

Referenced by ODMatrix::add(), NLHandler::addDistrict(), NLHandler::addDistrictEdge(), NLHandler::addE1Detector(), NLHandler::addE2Detector(), RONet::addEdge(), NLHandler::addEdgeLaneMeanData(), ROLoader::EdgeFloatTimeLineRetriever_EdgeWeight::addEdgeWeight(), ROLoader::EdgeFloatTimeLineRetriever_EdgeTravelTime::addEdgeWeight(), NLBuilder::EdgeFloatTimeLineRetriever_EdgeTravelTime::addEdgeWeight(), NLBuilder::EdgeFloatTimeLineRetriever_EdgeEffort::addEdgeWeight(), ROJTREdge::addFollowerProbability(), NLHandler::addIncomingLanes(), NIImporter_SUMO::addJunction(), NLHandler::addJunctionShape(), NLHandler::addLane(), NLHandler::addLaneShape(), NLHandler::addLogicItem(), RONet::addNode(), NLHandler::addPhase(), NLHandler::addPOI(), NLHandler::addPoly(), NLHandler::addRouteProbeDetector(), NLHandler::addSource(), NIImporter_SUMO::addSuccEdge(), NLHandler::addSuccLane(), NIVissimTL::NIVissimTLSignal::addTo(), ROJTRTurnDefLoader::addToEdge(), NLHandler::addTrigger(), RONet::addVehicle(), RONet::addVehicleType(), NLHandler::addVTypeProbeDetector(), NLHandler::addWAUTJunction(), NLHandler::addWAUTSwitch(), SUMOVehicleParameter::arrivallaneValidate(), SUMOVehicleParameter::arrivalposValidate(), SUMOVehicleParameter::arrivalspeedValidate(), NLHandler::beginE3Detector(), NLHandler::beginEdgeParsing(), ROJTRTurnDefLoader::beginFromEdge(), NLBuilder::build(), RORouteDef_Complete::buildCurrentRoute(), RODFDetector::buildDestinationDistribution(), NIImporter_VISUM::buildDistrictNode(), NIVissimConnection::buildEdgeConnections(), NIVissimEdge::buildNBEdge(), buildNetwork(), NBNodeCont::buildOffRamp(), NBNodeCont::buildOnRamp(), NLTriggerBuilder::buildTrigger(), NLTriggerBuilder::buildVaporizer(), OptionsCont::checkDependingSuboptions(), NIImporter_VISUM::checkNodes(), ROFrame::checkOptions(), checkOptions(), MSFrame::checkOptions(), MSTLLogicControl::TLSLogicVariants::checkOriginalTLS(), OptionsParser::checkParameter(), GUISUMOAbstractView::checkSnapshots(), NLHandler::closeEdge(), NLHandler::closeJunction(), NLHandler::closeLane(), MSRouteHandler::closeRouteDistribution(), NLHandler::closeSuccLane(), RORDLoader_SUMOBase::closeVehicle(), MSRouteHandler::closeVehicleTypeDistribution(), NLHandler::closeWAUT(), ROJTRRouter::compute(), DijkstraRouterTTBase< E, V, PF >::compute(), DijkstraRouterEffortBase< E, V, PF >::compute(), NBNode::computeInternalLaneShape(), NBEdge::computeLaneShape(), NBEdge::computeLaneShapes(), NBNode::computeLogic(), NBNode::computeNodeShape(), RONet::computeRoute(), RODFNet::computeRoutesFor(), NIImporter_OpenDrive::computeShapes(), RODFNet::computeTypes(), SUMOVehicleParameter::departlaneValidate(), SUMOVehicleParameter::departposValidate(), SUMOVehicleParameter::departspeedValidate(), MSLane::detectCollisions(), NIVissimDistrictConnection::dict_BuildDistricts(), NIVissimTL::dict_SetSignals(), GUISUMOAbstractView::drawDecals(), SUMOSAXAttributes::emitEmptyError(), GeomConvHelper::emitError(), SUMOSAXAttributes::emitFormatError(), SUMOSAXAttributes::emitUngivenError(), NLHandler::endE3Detector(), MSE3Collector::enter(), MSInductLoop::enterDetectorByMove(), OptionsLoader::error(), OptionsLoader::fatalError(), RORDLoader_TripDefs::getEdge(), NLTriggerBuilder::getLane(), NIVissimDistrictConnection::getMeanSpeed(), NIImporter_VISUM::getNamedEdge(), NIImporter_VISUM::getNamedEdgeContinuating(), NIImporter_VISUM::getNamedNode(), XMLSubSys::getSAXReader(), OptionsCont::getStringVector(), NBNodeCont::guessRamps(), GeoConvHelper::init(), GUILoadThread::initOptions(), NIXMLEdgesHandler::insertNodeChecking(), NIImporter_OpenStreetMap::insertNodeChecking(), RODFNet::isDestination(), MSLane::isEmissionSuccess(), RODFNet::isFalseSource(), RODFNet::isSource(), MSMeanData_Net::MSLaneMeanDataValues::isStillActive(), MSMeanData_HBEFA::MSLaneMeanDataValues::isStillActive(), MSMeanData_Harmonoise::MSLaneMeanDataValues::isStillActive(), OptionsCont::isUsableFileList(), MSE3Collector::leave(), PCLoaderVisum::load(), PCLoaderArcView::load(), NIImporter_VISUM::load(), NIImporter_Vissim::load(), NIImporter_ArcView::load(), loadDistricts(), NIImporter_RobocupRescue::loadEdges(), PCLoaderOSM::loadIfSet(), NIImporter_SUMO::loadNetwork(), NIImporter_RobocupRescue::loadNetwork(), NIImporter_OpenStreetMap::loadNetwork(), NIImporter_OpenDrive::loadNetwork(), NIImporter_ArcView::loadNetwork(), NIImporter_RobocupRescue::loadNodes(), PCLoaderDlrNavteq::loadPOIFile(), PCLoaderDlrNavteq::loadPolyFile(), NILoader::loadXMLType(), main(), GUIRunThread::makeStep(), MSLane::moveCritical(), RORDLoader_SUMOBase::myCharacters(), ROJTRTurnDefLoader::myCharacters(), PCLoaderXML::myCharacters(), NLHandler::myCharacters(), MSRouteHandler::myCharacters(), NLHandler::myEndElement(), NIXMLEdgesHandler::myEndElement(), NIImporter_SUMO::myEndElement(), RORDLoader_TripDefs::myStartElement(), RODFDetectorHandler::myStartElement(), PCTypeDefHandler::myStartElement(), PCLoaderXML::myStartElement(), PCLoaderOSM::EdgesHandler::myStartElement(), NLHandler::myStartElement(), NIXMLTypesHandler::myStartElement(), NIXMLNodesHandler::myStartElement(), NIXMLEdgesHandler::myStartElement(), NIXMLConnectionsHandler::myStartElement(), NIImporter_OpenStreetMap::EdgesHandler::myStartElement(), NIImporter_OpenStreetMap::NodesHandler::myStartElement(), NIImporter_OpenDrive::myStartElement(), MSRouteHandler::myStartElement(), MSLaneSpeedTrigger::myStartElement(), MSCalibrator::MSCalibrator_FileTriggeredChild::myStartElement(), NIVissimAbstractEdge::NIVissimAbstractEdge(), GUIDialog_Breakpoints::onCmdLoad(), NLHandler::openJunction(), ROLoader::openRoutes(), ROLoader::openTypedRoutes(), NLHandler::openWAUT(), OptionsParser::parse(), NIVissimSingleTypeParser_Simdauer::parse(), NIVissimSingleTypeParser_Signalgruppendefinition::parse(), NIVissimSingleTypeParser_Querverkehrsstoerungsdefinition::parse(), NIVissimSingleTypeParser_Lichtsignalanlagendefinition::parse(), NIImporter_VISUM::parse_AreaSubPartElement(), NIImporter_VISUM::parse_Connectors(), NIImporter_VISUM::parse_Districts(), NIImporter_VISUM::parse_EdgePolys(), NIImporter_VISUM::parse_Edges(), NIImporter_VISUM::parse_Lanes(), NIImporter_VISUM::parse_LanesConnections(), NIImporter_VISUM::parse_Nodes(), NIImporter_VISUM::parse_Point(), NIImporter_VISUM::parse_SignalGroups(), NIImporter_VISUM::parse_Turns(), NLTriggerBuilder::parseAndBuildBusStop(), NLTriggerBuilder::parseAndBuildLaneEmitTrigger(), NLTriggerBuilder::parseAndBuildLaneSpeedTrigger(), NLTriggerBuilder::parseAndBuildRerouter(), RGBColor::parseColorReporting(), RONetHandler::parseConnectedEdge(), ODDistrictHandler::parseConnection(), NIXMLConnectionsHandler::parseConnection(), RONetHandler::parseDistrictEdge(), RONetHandler::parseEdge(), SUMOVehicleParserHelper::parseEmissionClass(), SUMOVehicleParserHelper::parseGuiShape(), NIXMLConnectionsHandler::parseLaneBound(), NIXMLEdgesHandler::parseSplitLanes(), SUMOSAXAttributes::parseStringVector(), SUMOVehicleParserHelper::parseVehicleClass(), parseVehicleClasses(), OptionsCont::processMetaOptions(), OptionsParser::processNonBooleanSingleSwitch(), ROLoader::processRoutesStepWise(), RODFDetFlowLoader::read(), RODFNet::removeEmptyDetectors(), MSE3Collector::removeOnTripEnd(), OptionsCont::reportDoubleSetting(), RODFNet::reportEmptyDetectors(), NIVissimEdge::reportUnsetSpeeds(), GUILoadThread::run(), XMLSubSys::runParser(), OptionsCont::set(), Option_IntVector::set(), NBEdge::setConnection(), MSLane::setCritical(), SUMOSAXAttributes::setIDFromAttributes(), NLHandler::setKey(), NLHandler::setLaneNumber(), NLHandler::setOffset(), NLHandler::setRequestSize(), NLHandler::setSubKey(), OptionsLoader::setValue(), RORDLoader_SUMOBase::startAlternative(), RORDLoader_SUMOBase::startRoute(), traci::TraCIServer::TraCIServer(), NIXMLEdgesHandler::tryGetShape(), SAXWeightsHandler::tryParse(), SUMOSAXHandler::warning(), GUIEmitter::GUIEmitterChild_UserTriggeredChild::wrappedExecute(), RODFDetector::writeEmitterDefinition(), TraCIServerAPIHelper::writeStatusCmd(), and traci::TraCIServer::writeStatusCmd().

00094                                               {
00095     if (myLock!=0) {
00096         myLock->lock();
00097     }
00098     // beautify progress output
00099     if (myAmProcessingProcess && (myReport2COUT || myReport2CERR)) {
00100         std::cout << std::endl;
00101     }
00102     msg = build(msg, addType);
00103     // report to std::cout if wished
00104     if (myReport2COUT) {
00105         std::cout << msg << std::endl;
00106     }
00107     // report to std::cerr if wished
00108     if (myReport2CERR) {
00109         std::cerr << msg << std::endl;
00110     }
00111     // inform all other receivers
00112     for (RetrieverVector::iterator i=myRetrievers.begin(); i!=myRetrievers.end(); i++) {
00113         (*i)->inform(msg);
00114     }
00115     // set the information that something occured
00116     myWasInformed = true;
00117     myAmProcessingProcess = false;
00118     if (myLock!=0) {
00119         myLock->unlock();
00120     }
00121 }

void MsgHandler::initOutputOptions ( bool  gui = false  )  [static]

Definition at line 313 of file MsgHandler.cpp.

References addRetriever(), OptionsCont::getBool(), OutputDevice::getDevice(), getErrorInstance(), getMessageInstance(), OptionsCont::getOptions(), OptionsCont::getString(), getWarningInstance(), OptionsCont::isSet(), report2cerr(), and report2cout().

Referenced by main(), and GUILoadThread::run().

00313                                       {
00314     OptionsCont& oc = OptionsCont::getOptions();
00315     getMessageInstance()->report2cout(!gui && oc.getBool("verbose"));
00316     getWarningInstance()->report2cerr(!gui && !oc.getBool("suppress-warnings"));
00317     // build the logger if possible
00318     if (oc.isSet("log-file")) {
00319         try {
00320             OutputDevice *logFile = &OutputDevice::getDevice(oc.getString("log-file"));
00321             getErrorInstance()->addRetriever(logFile);
00322             getWarningInstance()->addRetriever(logFile);
00323             getMessageInstance()->addRetriever(logFile);
00324         } catch (IOError &) {
00325             throw ProcessError("Could not build logging file '" + oc.getString("log-file") + "'");
00326         }
00327     }
00328     if (oc.isSet("message-log")) {
00329         try {
00330             OutputDevice *logFile = &OutputDevice::getDevice(oc.getString("message-log"));
00331             getMessageInstance()->addRetriever(logFile);
00332         } catch (IOError &) {
00333             throw ProcessError("Could not build logging file '" + oc.getString("message-log") + "'");
00334         }
00335     }
00336     if (oc.isSet("error-log")) {
00337         try {
00338             OutputDevice *logFile = &OutputDevice::getDevice(oc.getString("error-log"));
00339             getErrorInstance()->addRetriever(logFile);
00340             getWarningInstance()->addRetriever(logFile);
00341         } catch (IOError &) {
00342             throw ProcessError("Could not build logging file '" + oc.getString("error-log") + "'");
00343         }
00344     }
00345 }

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

Generic output operator.

Returns:
The MsgHandler for further processing

Definition at line 134 of file MsgHandler.h.

References myReport2CERR, myReport2COUT, and myRetrievers.

00134                                        {
00135         if (myReport2COUT) {
00136             std::cout << t;
00137         }
00138         // report to cerr if wished
00139         if (myReport2CERR) {
00140             std::cerr << t;
00141         }
00142         // inform all other receivers
00143         for (RetrieverVector::iterator i=myRetrievers.begin(); i!=myRetrievers.end(); i++) {
00144             (*(*i)) << t;
00145         }
00146         return *this;
00147     }

MsgHandler& MsgHandler::operator= ( const MsgHandler s  )  [private]

invalid assignment operator

void MsgHandler::progressMsg ( std::string  msg,
bool  addType = true 
)

Writes a progress message.

Writes the message and closes it with a (char) 13

Definition at line 125 of file MsgHandler.cpp.

References build(), AbstractMutex::lock(), myAmProcessingProcess, myLock, myReport2CERR, myReport2COUT, myRetrievers, myWasInformed, and AbstractMutex::unlock().

Referenced by NIVissimConnectionCluster::joinBySameEdges(), ODMatrix::write(), and ROLoader::writeStats().

00125                                                    {
00126     if (myLock!=0) {
00127         myLock->lock();
00128     }
00129     // beautify progress output
00130     if (myAmProcessingProcess && (myReport2COUT || myReport2CERR)) {
00131         std::cout << std::endl;
00132     }
00133     msg = build(msg, addType);
00134     // report to std::cout if wished
00135     if (myReport2COUT) {
00136         std::cout << msg << '\r';
00137     }
00138     // report to std::cerr if wished
00139     if (myReport2CERR) {
00140         std::cerr << msg << '\r';
00141     }
00142     // inform all other receivers
00143     for (RetrieverVector::iterator i=myRetrievers.begin(); i!=myRetrievers.end(); i++) {
00144         (*i)->inform(msg);
00145     }
00146     // set the information that something occured
00147     myWasInformed = true;
00148     myAmProcessingProcess = false;
00149     if (myLock!=0) {
00150         myLock->unlock();
00151     }
00152 }

void MsgHandler::removeRetriever ( OutputDevice retriever  ) 

Removes the retriever from the.

Definition at line 249 of file MsgHandler.cpp.

References OptionsCont::exists(), OptionsCont::getBool(), OptionsCont::getOptions(), AbstractMutex::lock(), MT_MESSAGE, MT_WARNING, myLock, myReport2COUT, myRetrievers, myType, and AbstractMutex::unlock().

Referenced by GUIRunThread::deleteSim(), and GUILoadThread::submitEndAndCleanup().

00249                                                    {
00250     if (myLock!=0) {
00251         myLock->lock();
00252     }
00253     RetrieverVector::iterator i =
00254         find(myRetrievers.begin(), myRetrievers.end(), retriever);
00255     if (i!=myRetrievers.end()) {
00256         myRetrievers.erase(i);
00257     }
00258     // check whether the message shall be generated
00259     if (myType==MT_WARNING) {
00260         gSuppressWarnings = OptionsCont::getOptions().exists("suppress-warnings")
00261                             ? OptionsCont::getOptions().getBool("suppress-warnings")
00262                             : myRetrievers.size()==0;
00263     } else if (myType==MT_MESSAGE) {
00264         gSuppressMessages = !(myRetrievers.size()==0||myReport2COUT);
00265     }
00266     if (myLock!=0) {
00267         myLock->unlock();
00268     }
00269 }

void MsgHandler::report2cerr ( bool  value  ) 

Sets the information whether stderr shall be used as output device.

Definition at line 293 of file MsgHandler.cpp.

References OptionsCont::exists(), OptionsCont::getBool(), OptionsCont::getOptions(), AbstractMutex::lock(), MT_MESSAGE, MT_WARNING, myLock, myReport2CERR, myReport2COUT, myRetrievers, myType, and AbstractMutex::unlock().

Referenced by initOutputOptions(), main(), and GUILoadThread::run().

00293                                   {
00294     if (myLock!=0) {
00295         myLock->lock();
00296     }
00297     myReport2CERR = value;
00298     if (myType==MT_WARNING) {
00299         gSuppressWarnings = OptionsCont::getOptions().exists("suppress-warnings")
00300                             ? OptionsCont::getOptions().getBool("suppress-warnings")
00301                             : !myReport2CERR;
00302     } else if (myType==MT_MESSAGE) {
00303         gSuppressMessages = myRetrievers.size()==0&&!myReport2COUT;
00304     }
00305     std::cerr.setf(std::ios::fixed, std::ios::floatfield);
00306     if (myLock!=0) {
00307         myLock->unlock();
00308     }
00309 }

void MsgHandler::report2cout ( bool  value  ) 

Sets the information whether stdout shall be used as output device.

Definition at line 273 of file MsgHandler.cpp.

References OptionsCont::exists(), OptionsCont::getBool(), OptionsCont::getOptions(), AbstractMutex::lock(), MT_MESSAGE, MT_WARNING, myLock, myReport2COUT, myRetrievers, myType, and AbstractMutex::unlock().

Referenced by initOutputOptions(), main(), and GUILoadThread::run().

00273                                   {
00274     if (myLock!=0) {
00275         myLock->lock();
00276     }
00277     myReport2COUT = value;
00278     if (myType==MT_WARNING) {
00279         gSuppressWarnings = OptionsCont::getOptions().exists("suppress-warnings")
00280                             ? OptionsCont::getOptions().getBool("suppress-warnings")
00281                             : !myReport2COUT;
00282     } else if (myType==MT_MESSAGE) {
00283         gSuppressMessages = myRetrievers.size()==0&&!myReport2COUT;
00284     }
00285     std::cout.setf(std::ios::fixed, std::ios::floatfield);
00286     if (myLock!=0) {
00287         myLock->unlock();
00288     }
00289 }

bool MsgHandler::wasInformed (  )  const

Returns the information whether any messages were added.

Definition at line 375 of file MsgHandler.cpp.

References myWasInformed.

Referenced by main(), ROLoader::makeSingleStep(), ROLoader::processRoutesStepWise(), XMLSubSys::runParser(), and traci::TraCIServer::TraCIServer().

00375                               {
00376     return myWasInformed;
00377 }


Field Documentation

bool MsgHandler::myAmProcessingProcess = false [static, private]

Information whether a process information is printed to cout.

Definition at line 188 of file MsgHandler.h.

Referenced by beginProcessMsg(), endProcessMsg(), inform(), and progressMsg().

MsgHandler * MsgHandler::myErrorInstance = 0 [static, private]

The instance to handle errors.

Definition at line 179 of file MsgHandler.h.

Referenced by cleanupOnEnd(), and getErrorInstance().

AbstractMutex * MsgHandler::myLock = 0 [static, private]

The lock if any has to be used The lock will not be deleted.

Definition at line 192 of file MsgHandler.h.

Referenced by addRetriever(), assignLock(), beginProcessMsg(), cleanupOnEnd(), clear(), endProcessMsg(), inform(), progressMsg(), removeRetriever(), report2cerr(), and report2cout().

MsgHandler * MsgHandler::myMessageInstance = 0 [static, private]

The instance to handle normal messages.

Definition at line 185 of file MsgHandler.h.

Referenced by cleanupOnEnd(), and getMessageInstance().

Information whether stderr shall be used as output device, too.

Definition at line 205 of file MsgHandler.h.

Referenced by beginProcessMsg(), endProcessMsg(), inform(), operator<<(), progressMsg(), and report2cerr().

Information whether stdout shall be used as output device, too.

Definition at line 202 of file MsgHandler.h.

Referenced by beginProcessMsg(), endProcessMsg(), inform(), operator<<(), progressMsg(), removeRetriever(), report2cerr(), and report2cout().

The list of retrievers that shall be informed about new messages or errors.

Definition at line 211 of file MsgHandler.h.

Referenced by addRetriever(), beginProcessMsg(), endProcessMsg(), inform(), operator<<(), progressMsg(), removeRetriever(), report2cerr(), and report2cout().

The type of the instance.

Definition at line 196 of file MsgHandler.h.

Referenced by addRetriever(), build(), removeRetriever(), report2cerr(), and report2cout().

MsgHandler * MsgHandler::myWarningInstance = 0 [static, private]

The instance to handle warnings.

Definition at line 182 of file MsgHandler.h.

Referenced by cleanupOnEnd(), and getWarningInstance().

information wehther an error occured at all

Definition at line 199 of file MsgHandler.h.

Referenced by beginProcessMsg(), clear(), endProcessMsg(), inform(), progressMsg(), and wasInformed().


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

Generated on Wed May 5 00:06:48 2010 for Sumo - Simulation of Urban MObility by  doxygen 1.5.6