|
SUMO - Simulation of Urban MObility
|
An output device for TCP/IP network connections. More...
#include <OutputDevice_Network.h>
Public Member Functions | |
| OutputDevice_Network (const std::string &host, const int port) | |
| Constructor. | |
| ~OutputDevice_Network () | |
| Destructor. | |
OutputDevice member methods | |
| virtual bool | ok () |
| returns the information whether one can write into the device | |
| void | close () |
| Closes the device and removes it from the dictionary. | |
| void | setPrecision (unsigned int precision=OUTPUT_ACCURACY) |
| Sets the precison or resets it to default. | |
| bool | writeXMLHeader (const std::string &rootElement, const std::string xmlParams="", const std::string &attrs="", const std::string &comment="") |
| Writes an XML header with optional configuration. | |
| OutputDevice & | indent () |
| Adds indentation. | |
| OutputDevice & | openTag (const std::string &xmlElement) |
| Opens an XML tag. | |
| OutputDevice & | openTag (const SumoXMLTag &xmlElement) |
| Opens an XML tag. | |
| bool | closeTag (bool abbreviated=false) |
| Closes the most recently opened tag. | |
| OutputDevice & | writeAttr (std::string attr, std::string val) |
| writes an arbitrary attribute | |
| template<class T > | |
| OutputDevice & | writeAttr (const SumoXMLAttr attr, const T &val) |
| writes an named attribute | |
| void | inform (const std::string &msg) |
| Retrieves a message to this device. | |
| template<class T > | |
| OutputDevice & | operator<< (const T &t) |
| Abstract output operator. | |
Static Public Member Functions | |
| static std::string | realString (const SUMOReal v, const int precision=OUTPUT_ACCURACY) |
| Abstract output operator. | |
static access methods to OutputDevices | |
| static OutputDevice & | getDevice (const std::string &name, const std::string &base="") |
| Returns the described OutputDevice. | |
| static bool | createDeviceByOption (const std::string &optionName, const std::string &rootElement="") |
| Creates the device using the output definition stored in the named option. | |
| static OutputDevice & | getDeviceByOption (const std::string &name) throw (IOError, InvalidArgument) |
| Returns the device described by the option. | |
| static void | closeAll () |
Protected Member Functions | |
Methods that override/implement OutputDevice-methods | |
| std::ostream & | getOStream () |
| Returns the associated ostream. | |
| virtual void | postWriteHook () |
| Sends the data which was written to the string stream over the socket. | |
Private Attributes | |
| std::ostringstream | myMessage |
| packet buffer | |
| tcpip::Socket * | mySocket |
| the socket to transfer the data | |
An output device for TCP/IP network connections.
The implementation uses a portable socket implementation from the Shawn project (shawn.sf.net) located in src/foreign/tcpip/socket.h. It uses an internal storage for the messages, which is sent via the socket when "postWriteHook" is called.
Definition at line 57 of file OutputDevice_Network.h.
| OutputDevice_Network::OutputDevice_Network | ( | const std::string & | host, |
| const int | port | ||
| ) |
Constructor.
| [in] | host | The host to connect |
| [in] | port | The port to connect |
| IOError | If the connection could not been established |
Definition at line 46 of file OutputDevice_Network.cpp.
References tcpip::Socket::connect(), mySocket, toString(), and tcpip::SocketException::what().
| OutputDevice_Network::~OutputDevice_Network | ( | ) |
Destructor.
Definition at line 57 of file OutputDevice_Network.cpp.
References tcpip::Socket::close(), and mySocket.
| void OutputDevice::close | ( | ) | [inherited] |
Closes the device and removes it from the dictionary.
Definition at line 160 of file OutputDevice.cpp.
References OutputDevice::closeTag(), and OutputDevice::myOutputDevices.
Referenced by RONet::closeOutput(), GUIDialog_ViewSettings::onCmdExportSetting(), GUIParameterTracker::onCmdSave(), GUIDialog_Breakpoints::onCmdSave(), RODFDetectorCon::save(), PCPolyContainer::save(), GUISelectedStorage::save(), RODFDetectorCon::saveAsPOIs(), GUIDialog_ViewSettings::saveDecals(), RODFDetectorCon::saveRoutes(), NWWriter_XML::writeEdgesAndConnections(), RODFDetector::writeEmitterDefinition(), RODFDetectorCon::writeEmitterPOIs(), RODFDetectorCon::writeEmitters(), RODFDetectorCon::writeEndRerouterDetectors(), NWWriter_SUMO::writeNetwork(), NWFrame::writeNetwork(), NWWriter_XML::writeNodes(), RODFDetector::writeSingleSpeedTrigger(), RODFDetectorCon::writeSpeedTrigger(), NWWriter_XML::writeTrafficLights(), and RODFDetectorCon::writeValidationDetectors().
| void OutputDevice::closeAll | ( | ) | [static, inherited] |
Closes all registered devices
Definition at line 119 of file OutputDevice.cpp.
References OutputDevice::myOutputDevices.
Referenced by GUIRunThread::deleteSim(), and main().
Closes the most recently opened tag.
The topmost xml-element from the stack is written into the stream as a closing element ("</" + element + ">") and is then removed from the stack. If abbreviated closing is requested, only "/>" is the output.
| [in] | name | whether abbreviated closing is performed |
Definition at line 221 of file OutputDevice.cpp.
References OutputDevice::getOStream(), OutputDevice::indent(), OutputDevice::myDefaultIndentation, OutputDevice::myXMLStack, and OutputDevice::postWriteHook().
Referenced by OutputDevice::close(), MSPersonControl::erase(), MSDevice_Vehroutes::generateOutput(), PCPolyContainer::save(), ROVehicle::saveAllAsXML(), MSVehicleControl::scheduleVehicleRemoval(), SUMOVTypeParameter::write(), ODMatrix::write(), MSXMLRawOut::write(), MSInstantInductLoop::write(), NWWriter_SUMO::writeConnection(), NWWriter_SUMO::writeDistrict(), NWWriter_SUMO::writeEdge(), MSXMLRawOut::writeEdge(), MSMeanData::writeEdge(), NWWriter_XML::writeEdgesAndConnections(), RODFDetector::writeEmitterDefinition(), NWWriter_SUMO::writeInternalConnection(), NWWriter_SUMO::writeInternalEdge(), NWWriter_SUMO::writeInternalNodes(), NWWriter_SUMO::writeLane(), MSXMLRawOut::writeLane(), NBRequest::writeLaneResponse(), NWWriter_SUMO::writeLocation(), NWWriter_XML::writeNodes(), NWWriter_SUMO::writeProhibitions(), NWWriter_SUMO::writeRoundabout(), NWWriter_SUMO::writeTrafficLights(), MSXMLRawOut::writeVehicle(), RORouteDef_Complete::writeXMLDefinition(), RORouteDef_Alternatives::writeXMLDefinition(), RORoute::writeXMLDefinition(), MSRouteProbe::writeXMLOutput(), and MSMeanData::writeXMLOutput().
| bool OutputDevice::createDeviceByOption | ( | const std::string & | optionName, |
| const std::string & | rootElement = "" |
||
| ) | [static, inherited] |
Creates the device using the output definition stored in the named option.
Creates and returns the device named by the option. Asks whether the option and retrieves the name from the option if so. Optionally the XML header gets written as well. Returns whether a device was created (option was set).
Please note, that we do not have to consider the "application base" herein, because this call is only used to get file names of files referenced within XML-declarations of structures which paths already is aware of the cwd.
| [in] | optionName | The name of the option to use for retrieving the output definition |
| [in] | rootElement | The root element to use (XML-output) |
| IOError | If the output could not be built for any reason (error message is supplied) |
Definition at line 95 of file OutputDevice.cpp.
References OutputDevice::getDevice(), OptionsCont::getOptions(), and OutputDevice::writeXMLHeader().
Referenced by MSFrame::buildStreams(), MSDevice_Vehroutes::init(), and main().
| OutputDevice & OutputDevice::getDevice | ( | const std::string & | name, |
| const std::string & | base = "" |
||
| ) | [static, inherited] |
Returns the described OutputDevice.
Creates and returns the named device. "stdout" and "-" refer to standard out, "hostname:port" initiates socket connection. Otherwise a filename is assumed and the second parameter may be used to give a base directory. If there already is a device with the same name this one is returned.
| [in] | name | The description of the output name/port/whatever |
| [in] | base | The base path the application is run within |
| IOError | If the output could not be built for any reason (error message is supplied) |
Definition at line 64 of file OutputDevice.cpp.
References FileHelpers::checkForRelativity(), OutputDevice::getOStream(), FileHelpers::isSocket(), OutputDevice::myOutputDevices, and OutputDevice::setPrecision().
Referenced by NLHandler::addE1Detector(), NLHandler::addE2Detector(), NLHandler::addEdgeLaneMeanData(), NLHandler::addInstantE1Detector(), NLHandler::addRouteProbeDetector(), NLHandler::addVTypeProbeDetector(), NLHandler::beginE3Detector(), NLDiscreteEventBuilder::buildSaveTLStateCommand(), NLDiscreteEventBuilder::buildSaveTLSwitchesCommand(), NLDiscreteEventBuilder::buildSaveTLSwitchStatesCommand(), OutputDevice::createDeviceByOption(), OutputDevice::getDeviceByOption(), MsgHandler::initOutputOptions(), GUIDialog_ViewSettings::onCmdExportSetting(), GUIParameterTracker::onCmdSave(), GUIDialog_EditViewport::onCmdSave(), GUIDialog_Breakpoints::onCmdSave(), RONet::openOutput(), RODFDetectorCon::save(), PCPolyContainer::save(), GUISelectedStorage::save(), RODFDetectorCon::saveAsPOIs(), GUIDialog_ViewSettings::saveDecals(), RODFDetectorCon::saveRoutes(), NWWriter_XML::writeEdgesAndConnections(), RODFDetector::writeEmitterDefinition(), RODFDetectorCon::writeEmitterPOIs(), RODFDetectorCon::writeEmitters(), RODFDetectorCon::writeEndRerouterDetectors(), NWWriter_SUMO::writeNetwork(), NWWriter_OpenDrive::writeNetwork(), NWWriter_MATSim::writeNetwork(), NWFrame::writeNetwork(), NWWriter_XML::writeNodes(), RODFDetector::writeSingleSpeedTrigger(), RODFDetectorCon::writeSpeedTrigger(), NWWriter_XML::writeTrafficLights(), and RODFDetectorCon::writeValidationDetectors().
| OutputDevice & OutputDevice::getDeviceByOption | ( | const std::string & | name | ) | throw (IOError, InvalidArgument) [static, inherited] |
Returns the device described by the option.
Returns the device named by the option. If the option is unknown, unset or the device was not created before, InvalidArgument is thrown.
Please note, that we do not have to consider the "application base" herein.
| [in] | name | The name of the option to use for retrieving the output definition |
| IOError | If the output could not be built for any reason (error message is supplied) |
| InvalidArgument | If the option with the given name does not exist |
Definition at line 109 of file OutputDevice.cpp.
References OutputDevice::getDevice(), OptionsCont::getOptions(), and OptionsCont::getString().
Referenced by MSPersonControl::erase(), MSDevice_Vehroutes::generateOutput(), MSDevice_Tripinfo::generateOutput(), MSDevice_HBEFA::generateOutput(), main(), MSVehicleControl::scheduleVehicleRemoval(), and MSNet::writeOutput().
| std::ostream & OutputDevice_Network::getOStream | ( | ) | [protected, virtual] |
Returns the associated ostream.
The stream is an ostringstream, actually, into which the message is written. It is sent when postWriteHook is called.
Implements OutputDevice.
Definition at line 64 of file OutputDevice_Network.cpp.
References myMessage.
| OutputDevice & OutputDevice::indent | ( | ) | [inherited] |
Adds indentation.
An intendation, depending on the current xml-element-stack size, is written.
Definition at line 198 of file OutputDevice.cpp.
References OutputDevice::getOStream(), OutputDevice::myDefaultIndentation, OutputDevice::myXMLStack, and OutputDevice::postWriteHook().
Referenced by OutputDevice::closeTag(), and MSMeanData::writePrefix().
| void OutputDevice::inform | ( | const std::string & | msg | ) | [inherited] |
Retrieves a message to this device.
Implementation of the MessageRetriever interface. Writes the given message to the output device.
| [in] | msg | The msg to write to the device |
Definition at line 242 of file OutputDevice.cpp.
References OutputDevice::getOStream(), and OutputDevice::postWriteHook().
| bool OutputDevice::ok | ( | ) | [virtual, inherited] |
returns the information whether one can write into the device
Definition at line 154 of file OutputDevice.cpp.
References OutputDevice::getOStream().
| OutputDevice & OutputDevice::openTag | ( | const std::string & | xmlElement | ) | [inherited] |
Opens an XML tag.
An indentation, depending on the current xml-element-stack size, is written followed by the given xml element ("<" + xmlElement) The xml element is added to the stack, then.
| [in] | xmlElement | Name of element to open |
Definition at line 206 of file OutputDevice.cpp.
References OutputDevice::getOStream(), OutputDevice::myDefaultIndentation, OutputDevice::myXMLStack, and OutputDevice::postWriteHook().
Referenced by MSPersonControl::erase(), MSDevice_Vehroutes::generateOutput(), MSDevice_Tripinfo::generateOutput(), MSDevice_HBEFA::generateOutput(), OutputDevice::openTag(), PCPolyContainer::save(), MSPerson::MSPersonStage_Waiting::tripInfoOutput(), MSPerson::MSPersonStage_Driving::tripInfoOutput(), MSPerson::MSPersonStage_Walking::tripInfoOutput(), SUMOVTypeParameter::write(), ODMatrix::write(), MSXMLRawOut::write(), MSInstantInductLoop::write(), SUMOVehicleParameter::writeAs(), NWWriter_SUMO::writeConnection(), NWWriter_SUMO::writeDistrict(), NWWriter_SUMO::writeEdge(), MSXMLRawOut::writeEdge(), MSMeanData::writeEdge(), NWWriter_XML::writeEdgesAndConnections(), RODFDetector::writeEmitterDefinition(), NWWriter_SUMO::writeInternalConnection(), NWWriter_SUMO::writeInternalEdge(), NWWriter_SUMO::writeInternalNodes(), NWWriter_SUMO::writeJunction(), NWWriter_SUMO::writeLane(), MSXMLRawOut::writeLane(), NBRequest::writeLaneResponse(), NWWriter_SUMO::writeLocation(), NWWriter_XML::writeNodes(), NWWriter_SUMO::writeProhibitions(), NWWriter_SUMO::writeRoundabout(), NWWriter_SUMO::writeTrafficLights(), MSXMLRawOut::writeVehicle(), RORouteDef_Complete::writeXMLDefinition(), RORouteDef_Alternatives::writeXMLDefinition(), RORoute::writeXMLDefinition(), OutputDevice::writeXMLHeader(), MSRouteProbe::writeXMLOutput(), MSMeanData::writeXMLOutput(), and MSDevice_Vehroutes::writeXMLRoute().
| OutputDevice & OutputDevice::openTag | ( | const SumoXMLTag & | xmlElement | ) | [inherited] |
Opens an XML tag.
Helper method which finds the correct string before calling openTag.
| [in] | xmlElement | Id of the element to open |
Definition at line 215 of file OutputDevice.cpp.
References OutputDevice::openTag(), and toString().
| OutputDevice& OutputDevice::operator<< | ( | const T & | t | ) | [inline, inherited] |
Abstract output operator.
Definition at line 261 of file OutputDevice.h.
References OutputDevice::getOStream(), and OutputDevice::postWriteHook().
| void OutputDevice_Network::postWriteHook | ( | ) | [protected, virtual] |
Sends the data which was written to the string stream over the socket.
Converts the stored message into a vector of chars and sends them via to the socket implementation. Resets the message, afterwards.
Reimplemented from OutputDevice.
Definition at line 70 of file OutputDevice_Network.cpp.
References myMessage, mySocket, and tcpip::Socket::send().
| std::string OutputDevice::realString | ( | const SUMOReal | v, |
| const int | precision = OUTPUT_ACCURACY |
||
| ) | [static, inherited] |
Abstract output operator.
Definition at line 128 of file OutputDevice.cpp.
Referenced by MSDevice_HBEFA::generateOutput(), and MSMeanData_HBEFA::MSLaneMeanDataValues::write().
| void OutputDevice::setPrecision | ( | unsigned int | precision = OUTPUT_ACCURACY | ) | [inherited] |
Sets the precison or resets it to default.
| [in] | precision | The accuracy (number of digits behind '.') to set |
Definition at line 173 of file OutputDevice.cpp.
References OutputDevice::getOStream().
Referenced by MSVTypeProbe::execute(), OutputDevice::getDevice(), NWWriter_XML::writeEdgesAndConnections(), NWWriter_SUMO::writeLocation(), NWWriter_XML::writeNodes(), RORouteDef_Alternatives::writeXMLDefinition(), and RORoute::writeXMLDefinition().
| OutputDevice & OutputDevice::writeAttr | ( | std::string | attr, |
| std::string | val | ||
| ) | [inherited] |
writes an arbitrary attribute
| [in] | attr | The attribute (name) |
| [in] | val | The attribute value |
Definition at line 249 of file OutputDevice.cpp.
References OutputDevice::getOStream().
Referenced by MSDevice_Vehroutes::generateOutput(), SUMOVTypeParameter::write(), MSInstantInductLoop::write(), OutputDevice::writeAttr(), NWWriter_SUMO::writeConnection(), NWWriter_SUMO::writeEdge(), NWWriter_XML::writeEdgesAndConnections(), NWWriter_SUMO::writeInternalConnection(), NWWriter_SUMO::writeInternalEdge(), NWWriter_SUMO::writeJunction(), NWWriter_SUMO::writeLane(), NBRequest::writeLaneResponse(), NWWriter_SUMO::writeLocation(), NWWriter_XML::writeNodes(), NWFrame::writePositionLong(), NWWriter_SUMO::writeProhibitions(), and NWWriter_SUMO::writeTrafficLights().
| OutputDevice& OutputDevice::writeAttr | ( | const SumoXMLAttr | attr, |
| const T & | val | ||
| ) | [inline, inherited] |
writes an named attribute
| [in] | attr | The attribute (name) |
| [in] | val | The attribute value |
Definition at line 243 of file OutputDevice.h.
References OutputDevice::getOStream(), toString(), and OutputDevice::writeAttr().
| bool OutputDevice::writeXMLHeader | ( | const std::string & | rootElement, |
| const std::string | xmlParams = "", |
||
| const std::string & | attrs = "", |
||
| const std::string & | comment = "" |
||
| ) | [inherited] |
Writes an XML header with optional configuration.
If something has been written (myXMLStack is not empty), nothing is written and false returned.
| [in] | rootElement | The root element to use |
| [in] | xmlParams | Additional parameters (such as encoding) to include in the <?xml> declaration |
| [in] | attrs | Additional attributes to save within the rootElement |
| [in] | comment | Additional comment (saved in front the rootElement) |
Check which parameter is used herein
Describe what is saved
Definition at line 179 of file OutputDevice.cpp.
References OptionsCont::getOptions(), OutputDevice::getOStream(), OutputDevice::myXMLStack, OutputDevice::openTag(), and OptionsCont::writeXMLHeader().
Referenced by Command_SaveTLSState::Command_SaveTLSState(), Command_SaveTLSSwitches::Command_SaveTLSSwitches(), Command_SaveTLSSwitchStates::Command_SaveTLSSwitchStates(), OutputDevice::createDeviceByOption(), MSVTypeProbe::MSVTypeProbe(), RONet::openOutput(), RODFDetectorCon::save(), PCPolyContainer::save(), RODFDetectorCon::saveAsPOIs(), RODFDetectorCon::saveRoutes(), NWWriter_XML::writeEdgesAndConnections(), RODFDetector::writeEmitterDefinition(), RODFDetectorCon::writeEmitterPOIs(), RODFDetectorCon::writeEmitters(), RODFDetectorCon::writeEndRerouterDetectors(), NWWriter_SUMO::writeNetwork(), NWWriter_XML::writeNodes(), RODFDetector::writeSingleSpeedTrigger(), RODFDetectorCon::writeSpeedTrigger(), NWWriter_XML::writeTrafficLights(), RODFDetectorCon::writeValidationDetectors(), MSRouteProbe::writeXMLDetectorProlog(), MSMeanData::writeXMLDetectorProlog(), MSInstantInductLoop::writeXMLDetectorProlog(), MSInductLoop::writeXMLDetectorProlog(), MSE3Collector::writeXMLDetectorProlog(), MSE2Collector::writeXMLDetectorProlog(), and MS_E2_ZS_CollectorOverLanes::writeXMLDetectorProlog().
std::ostringstream OutputDevice_Network::myMessage [private] |
packet buffer
Definition at line 98 of file OutputDevice_Network.h.
Referenced by getOStream(), and postWriteHook().
tcpip::Socket* OutputDevice_Network::mySocket [private] |
the socket to transfer the data
Definition at line 101 of file OutputDevice_Network.h.
Referenced by OutputDevice_Network(), postWriteHook(), and ~OutputDevice_Network().