![]() |
SUMO - Simulation of Urban MObility
|
TraCI server used to control sumo by a remote TraCI client. More...
#include <TraCIServer.h>


Data Structures | |
| struct | SocketInfo |
| class | Subscription |
| Representation of a subscription. More... | |
Public Types | |
| typedef bool(* | CmdExecutor) (TraCIServer &server, tcpip::Storage &inputStorage, tcpip::Storage &outputStorage) |
| Definition of a method to be called for serving an associated commandID. More... | |
Public Member Functions | |
| void | cleanup () |
| clean up subscriptions More... | |
| void | collectObjectsInRange (int domain, const PositionVector &shape, double range, std::set< std::string > &into) |
| SUMOTime | getTargetTime () const |
| const std::map< MSNet::VehicleState, std::vector< std::string > > & | getVehicleStateChanges () const |
| bool | isEmbedded () const |
| void | postProcessVTD () |
| void | processCommandsUntilSimStep (SUMOTime step) |
| process all commands until the next SUMO simulation step. It is guaranteed that t->getTargetTime() >= myStep after call (except the case that a load or close command is received)s More... | |
| void | setVTDControlled (MSVehicle *v, Position xyPos, MSLane *l, double pos, double posLat, double angle, int edgeOffset, ConstMSEdgeVector route, SUMOTime t) |
| void | vehicleStateChanged (const SUMOVehicle *const vehicle, MSNet::VehicleState to) |
| Called if a vehicle changes its state. More... | |
| void | writeResponseWithLength (tcpip::Storage &outputStorage, tcpip::Storage &tempMsg) |
Writing Status Messages | |
| void | writeStatusCmd (int commandId, int status, const std::string &description, tcpip::Storage &outputStorage) |
| Writes a status command to the given storage. More... | |
| void | writeStatusCmd (int commandId, int status, const std::string &description) |
| Writes a status command to myOutputStorage. More... | |
| bool | writeErrorStatusCmd (int commandId, const std::string &description, tcpip::Storage &outputStorage) |
| Writes a status command to the given storage with status = RTYPE_ERR. More... | |
Helpers for reading and checking values | |
| bool | readTypeCheckingInt (tcpip::Storage &inputStorage, int &into) |
| Reads the value type and an int, verifying the type. More... | |
| bool | readTypeCheckingDouble (tcpip::Storage &inputStorage, double &into) |
| Reads the value type and a double, verifying the type. More... | |
| bool | readTypeCheckingString (tcpip::Storage &inputStorage, std::string &into) |
| Reads the value type and a string, verifying the type. More... | |
| bool | readTypeCheckingStringList (tcpip::Storage &inputStorage, std::vector< std::string > &into) |
| Reads the value type and a string list, verifying the type. More... | |
| bool | readTypeCheckingColor (tcpip::Storage &inputStorage, TraCIColor &into) |
| Reads the value type and a color, verifying the type. More... | |
| bool | readTypeCheckingPosition2D (tcpip::Storage &inputStorage, TraCIPosition &into) |
| Reads the value type and a 2D position, verifying the type. More... | |
| bool | readTypeCheckingBoundary (tcpip::Storage &inputStorage, Boundary &into) |
| Reads the value type and a 2D bounding box, verifying the type. More... | |
| bool | readTypeCheckingByte (tcpip::Storage &inputStorage, int &into) |
| Reads the value type and a byte, verifying the type. More... | |
| bool | readTypeCheckingUnsignedByte (tcpip::Storage &inputStorage, int &into) |
| Reads the value type and an unsigned byte, verifying the type. More... | |
| bool | readTypeCheckingPolygon (tcpip::Storage &inputStorage, PositionVector &into) |
| Reads the value type and a polygon, verifying the type. More... | |
Static Public Member Functions | |
| static TraCIServer * | getInstance () |
Initialisation and Shutdown | |
| static void | openSocket (const std::map< int, CmdExecutor > &execs) |
| Initialises the server. More... | |
| static void | close () |
| request termination of connection More... | |
| static bool | wasClosed () |
| check whether close was requested More... | |
Private Member Functions | |
| bool | addObjectVariableSubscription (const int commandId, const bool hasContext) |
| void | checkClientOrdering () |
| Called once after connection of all clients for executing SET_ORDER (and possibly prior GET_VERSION) commands, that should be executed before simulation starts (in processCommandsUntilNextSimStep()). More... | |
| int | dispatchCommand () |
| Handles command, writes response to myOutputStorage. More... | |
| bool | findObjectShape (int domain, const std::string &id, PositionVector &shape) |
| void | initialiseSubscription (const Subscription &s) |
| SUMOTime | nextTargetTime () const |
| get the minimal next target time among all clients More... | |
| TraCIServer & | operator= (const TraCIServer &s) |
| Invalidated assignment operator. More... | |
| void | processReorderingRequests () |
| checks for and processes reordering requests (relevant for multiple clients) More... | |
| bool | processSingleSubscription (const TraCIServer::Subscription &s, tcpip::Storage &writeInto, std::string &errors) |
| int | readCommandID (int &commandStart, int &commandLength) |
| Reads the next command ID from the input storage. More... | |
| std::map< int, SocketInfo * >::iterator | removeCurrentSocket () |
| removes myCurrentSocket from mySockets and returns an iterator pointing to the next member according to the ordering More... | |
| void | removeSubscription (int commandId, const std::string &identity, int domain) |
| void | sendOutputToAll () const |
| send out subscription results (actually just the content of myOutputStorage) to clients which will act in this step (i.e. with client target time <= myTargetTime) More... | |
| void | sendSingleSimStepResponse () |
| sends an empty response to a simstep command to the current client. (This applies to a situation where the TraCI step frequency is higher than the SUMO step frequency) More... | |
| TraCIServer (const SUMOTime begin, const int port, const int numClients) | |
| Constructor. More... | |
| virtual | ~TraCIServer () |
| Destructor. More... | |
Server-internal command handling | |
| bool | commandGetVersion () |
| Returns the TraCI-version. More... | |
| void | postProcessSimulationStep () |
| Handles subscriptions to send after a simstep2 command. More... | |
Private Attributes | |
| const bool | myAmEmbedded |
| Whether the server runs in embedded mode. More... | |
| std::map< int, SocketInfo * >::iterator | myCurrentSocket |
| The currently active client socket. More... | |
| std::map< int, CmdExecutor > | myExecutors |
| Map of commandIds -> their executors; applicable if the executor applies to the method footprint. More... | |
| tcpip::Storage | myInputStorage |
| The storage to read from. More... | |
| LANE_RTREE_QUAL * | myLaneTree |
| A storage of lanes. More... | |
| std::map< int, NamedRTree * > | myObjects |
| A storage of objects. More... | |
| tcpip::Storage | myOutputStorage |
| The storage to writeto. More... | |
| std::map< int, int > | myParameterSizes |
| Map of variable ids to the size of the parameter in bytes. More... | |
| tcpip::Socket * | myServerSocket |
| The server socket. More... | |
| std::map< int, SocketInfo * > | mySocketReorderRequests |
| This stores the setOrder(int) requests of the clients. More... | |
| std::map< int, SocketInfo * > | mySockets |
| The socket connections to the clients the first component (index) determines the client's order (lowest index's commands are processed first),. More... | |
| tcpip::Storage | mySubscriptionCache |
| The last timestep's subscription results. More... | |
| std::vector< Subscription > | mySubscriptions |
| The list of known, still valid subscriptions. More... | |
| SUMOTime | myTargetTime |
| The time step to reach until processing the next commands. More... | |
| std::map< MSNet::VehicleState, std::vector< std::string > > | myVehicleStateChanges |
| Changes in the states of simulated vehicles. More... | |
| std::map< std::string, MSVehicle * > | myVTDControlledVehicles |
Static Private Attributes | |
| static bool | myDoCloseConnection = false |
| Whether the connection was set to be to close. More... | |
| static TraCIServer * | myInstance = 0 |
| Singleton instance of the server. More... | |
TraCI server used to control sumo by a remote TraCI client.
Definition at line 74 of file TraCIServer.h.
| typedef bool(* TraCIServer::CmdExecutor) (TraCIServer &server, tcpip::Storage &inputStorage, tcpip::Storage &outputStorage) |
Definition of a method to be called for serving an associated commandID.
Definition at line 77 of file TraCIServer.h.
|
private |
Constructor.
| [in] | port | The port to listen to (to open) |
Definition at line 112 of file TraCIServer.cpp.
References tcpip::Socket::accept(), checkClientOrdering(), CMD_GET_EDGE_VARIABLE, CMD_GET_INDUCTIONLOOP_VARIABLE, CMD_GET_JUNCTION_VARIABLE, CMD_GET_LANE_VARIABLE, CMD_GET_LANEAREA_VARIABLE, CMD_GET_MULTIENTRYEXIT_VARIABLE, CMD_GET_PERSON_VARIABLE, CMD_GET_POI_VARIABLE, CMD_GET_POLYGON_VARIABLE, CMD_GET_ROUTE_VARIABLE, CMD_GET_SIM_VARIABLE, CMD_GET_TL_VARIABLE, CMD_GET_VEHICLE_VARIABLE, CMD_GET_VEHICLETYPE_VARIABLE, CMD_SET_EDGE_VARIABLE, CMD_SET_LANE_VARIABLE, CMD_SET_PERSON_VARIABLE, CMD_SET_POI_VARIABLE, CMD_SET_POLYGON_VARIABLE, CMD_SET_ROUTE_VARIABLE, CMD_SET_SIM_VARIABLE, CMD_SET_TL_VARIABLE, CMD_SET_VEHICLE_VARIABLE, CMD_SET_VEHICLETYPE_VARIABLE, MsgHandler::getWarningInstance(), MSGlobals::gUsingInternalLanes, MsgHandler::inform(), MAX_ORDER, myAmEmbedded, myCurrentSocket, myDoCloseConnection, myExecutors, myParameterSizes, myServerSocket, mySockets, myVehicleStateChanges, TraCIServerAPI_Edge::processGet(), TraCIServerAPI_VehicleType::processGet(), TraCIServerAPI_Route::processGet(), TraCIServerAPI_TLS::processGet(), TraCIServerAPI_POI::processGet(), TraCIServerAPI_MultiEntryExit::processGet(), TraCIServerAPI_Polygon::processGet(), TraCIServerAPI_InductionLoop::processGet(), TraCIServerAPI_Vehicle::processGet(), TraCIServerAPI_Person::processGet(), TraCIServerAPI_Simulation::processGet(), TraCIServerAPI_LaneArea::processGet(), TraCIServerAPI_Lane::processGet(), TraCIServerAPI_Junction::processGet(), TraCIServerAPI_Edge::processSet(), TraCIServerAPI_POI::processSet(), TraCIServerAPI_TLS::processSet(), TraCIServerAPI_Route::processSet(), TraCIServerAPI_Polygon::processSet(), TraCIServerAPI_Vehicle::processSet(), TraCIServerAPI_Simulation::processSet(), TraCIServerAPI_Person::processSet(), TraCIServerAPI_Lane::processSet(), TraCIServerAPI_VehicleType::processSet(), toString(), VAR_LEADER, MSNet::VEHICLE_STATE_ARRIVED, MSNet::VEHICLE_STATE_BUILT, MSNet::VEHICLE_STATE_DEPARTED, MSNet::VEHICLE_STATE_ENDING_PARKING, MSNet::VEHICLE_STATE_ENDING_STOP, MSNet::VEHICLE_STATE_ENDING_TELEPORT, MSNet::VEHICLE_STATE_NEWROUTE, MSNet::VEHICLE_STATE_STARTING_PARKING, MSNet::VEHICLE_STATE_STARTING_STOP, MSNet::VEHICLE_STATE_STARTING_TELEPORT, tcpip::SocketException::what(), WRITE_MESSAGE, and WRITE_WARNING.
Referenced by getVehicleStateChanges(), and openSocket().
|
privatevirtual |
Destructor.
Definition at line 199 of file TraCIServer.cpp.
References cleanup(), myCurrentSocket, myServerSocket, and mySockets.
Referenced by getVehicleStateChanges().
|
private |
Definition at line 1313 of file TraCIServer.cpp.
References initialiseSubscription(), myInputStorage, myParameterSizes, tcpip::Storage::readChar(), tcpip::Storage::readDouble(), tcpip::Storage::readInt(), tcpip::Storage::readString(), tcpip::Storage::readUnsignedByte(), and removeSubscription().
Referenced by dispatchCommand().
|
private |
Called once after connection of all clients for executing SET_ORDER (and possibly prior GET_VERSION) commands, that should be executed before simulation starts (in processCommandsUntilNextSimStep()).
Definition at line 284 of file TraCIServer.cpp.
References CMD_GETVERSION, CMD_SETORDER, dispatchCommand(), myCurrentSocket, myInputStorage, myOutputStorage, mySockets, readCommandID(), tcpip::Storage::reset(), tcpip::Storage::writeStorage(), and tcpip::Storage::writeUnsignedByte().
Referenced by TraCIServer().
| void TraCIServer::cleanup | ( | ) |
clean up subscriptions
Definition at line 598 of file TraCIServer.cpp.
References tcpip::Storage::begin(), dispatchCommand(), tcpip::Storage::end(), FileHelpers::getFilePath(), OptionsCont::getOptions(), myCurrentSocket, myInputStorage, myInstance, myLaneTree, myObjects, myOutputStorage, mySockets, mySubscriptionCache, mySubscriptions, myTargetTime, myVehicleStateChanges, tcpip::Storage::reset(), string2time(), tcpip::SocketException::what(), and tcpip::Storage::writeChar().
Referenced by MSNet::clearAll(), getInstance(), and ~TraCIServer().
|
static |
request termination of connection
Definition at line 231 of file TraCIServer.cpp.
References myDoCloseConnection, and myInstance.
Referenced by getInstance(), and main().
| void TraCIServer::collectObjectsInRange | ( | int | domain, |
| const PositionVector & | shape, | ||
| double | range, | ||
| std::set< std::string > & | into | ||
| ) |
Definition at line 1159 of file TraCIServer.cpp.
References CMD_GET_EDGE_VARIABLE, CMD_GET_INDUCTIONLOOP_VARIABLE, CMD_GET_JUNCTION_VARIABLE, CMD_GET_LANE_VARIABLE, CMD_GET_PERSON_VARIABLE, CMD_GET_POI_VARIABLE, CMD_GET_POLYGON_VARIABLE, CMD_GET_VEHICLE_VARIABLE, MSLane::fill(), PositionVector::getBoxBoundary(), TraCIServerAPI_InductionLoop::getTree(), TraCIServerAPI_Junction::getTree(), TraCIServerAPI_POI::getTree(), TraCIServerAPI_Polygon::getTree(), Boundary::grow(), LANE_RTREE_QUAL, myLaneTree, myObjects, MSLane::visit(), Boundary::xmax(), Boundary::xmin(), Boundary::ymax(), and Boundary::ymin().
Referenced by getVehicleStateChanges(), processSingleSubscription(), and TraCIServerAPI_Vehicle::vtdMap().
|
private |
Returns the TraCI-version.
Definition at line 896 of file TraCIServer.cpp.
References CMD_GETVERSION, myOutputStorage, RTYPE_OK, tcpip::Storage::size(), TRACI_VERSION, VERSION_STRING, tcpip::Storage::writeInt(), writeStatusCmd(), tcpip::Storage::writeStorage(), tcpip::Storage::writeString(), and tcpip::Storage::writeUnsignedByte().
Referenced by dispatchCommand().
|
private |
Handles command, writes response to myOutputStorage.
Definition at line 744 of file TraCIServer.cpp.
References addObjectVariableSubscription(), CMD_CLOSE, CMD_GETVERSION, CMD_LOAD, CMD_SETORDER, CMD_SIMSTEP, CMD_SUBSCRIBE_EDGE_CONTEXT, CMD_SUBSCRIBE_EDGE_VARIABLE, CMD_SUBSCRIBE_GUI_CONTEXT, CMD_SUBSCRIBE_GUI_VARIABLE, CMD_SUBSCRIBE_INDUCTIONLOOP_CONTEXT, CMD_SUBSCRIBE_INDUCTIONLOOP_VARIABLE, CMD_SUBSCRIBE_JUNCTION_CONTEXT, CMD_SUBSCRIBE_JUNCTION_VARIABLE, CMD_SUBSCRIBE_LANE_CONTEXT, CMD_SUBSCRIBE_LANE_VARIABLE, CMD_SUBSCRIBE_LANEAREA_CONTEXT, CMD_SUBSCRIBE_LANEAREA_VARIABLE, CMD_SUBSCRIBE_MULTIENTRYEXIT_CONTEXT, CMD_SUBSCRIBE_MULTIENTRYEXIT_VARIABLE, CMD_SUBSCRIBE_PERSON_CONTEXT, CMD_SUBSCRIBE_PERSON_VARIABLE, CMD_SUBSCRIBE_POI_CONTEXT, CMD_SUBSCRIBE_POI_VARIABLE, CMD_SUBSCRIBE_POLYGON_CONTEXT, CMD_SUBSCRIBE_POLYGON_VARIABLE, CMD_SUBSCRIBE_ROUTE_CONTEXT, CMD_SUBSCRIBE_ROUTE_VARIABLE, CMD_SUBSCRIBE_SIM_CONTEXT, CMD_SUBSCRIBE_SIM_VARIABLE, CMD_SUBSCRIBE_TL_CONTEXT, CMD_SUBSCRIBE_TL_VARIABLE, CMD_SUBSCRIBE_VEHICLE_CONTEXT, CMD_SUBSCRIBE_VEHICLE_VARIABLE, CMD_SUBSCRIBE_VEHICLETYPE_CONTEXT, CMD_SUBSCRIBE_VEHICLETYPE_VARIABLE, commandGetVersion(), DELTA_T, MSNet::getCurrentTimeStep(), MSNet::getInstance(), TraCI::load(), MAX_ORDER, myAmEmbedded, myCurrentSocket, myDoCloseConnection, myExecutors, myInputStorage, myOutputStorage, mySocketReorderRequests, mySockets, myTargetTime, myVehicleStateChanges, tcpip::Storage::position(), postProcessSimulationStep(), tcpip::Storage::readChar(), readCommandID(), tcpip::Storage::readInt(), readTypeCheckingStringList(), tcpip::Storage::reset(), RTYPE_ERR, RTYPE_NOTIMPLEMENTED, RTYPE_OK, sendSingleSimStepResponse(), MSNet::simulationStep(), toString(), tcpip::Storage::valid_pos(), writeErrorStatusCmd(), and writeStatusCmd().
Referenced by checkClientOrdering(), cleanup(), and processCommandsUntilSimStep().
|
private |
Definition at line 1092 of file TraCIServer.cpp.
References CMD_SUBSCRIBE_EDGE_CONTEXT, CMD_SUBSCRIBE_GUI_CONTEXT, CMD_SUBSCRIBE_INDUCTIONLOOP_CONTEXT, CMD_SUBSCRIBE_JUNCTION_CONTEXT, CMD_SUBSCRIBE_LANE_CONTEXT, CMD_SUBSCRIBE_MULTIENTRYEXIT_CONTEXT, CMD_SUBSCRIBE_PERSON_CONTEXT, CMD_SUBSCRIBE_POI_CONTEXT, CMD_SUBSCRIBE_POLYGON_CONTEXT, CMD_SUBSCRIBE_ROUTE_CONTEXT, CMD_SUBSCRIBE_SIM_CONTEXT, CMD_SUBSCRIBE_TL_CONTEXT, CMD_SUBSCRIBE_VEHICLE_CONTEXT, CMD_SUBSCRIBE_VEHICLETYPE_CONTEXT, TraCIServerAPI_InductionLoop::getPosition(), TraCIServerAPI_Junction::getPosition(), TraCIServerAPI_POI::getPosition(), TraCIServerAPI_Vehicle::getPosition(), TraCIServerAPI_Person::getPosition(), TraCIServerAPI_Edge::getShape(), TraCIServerAPI_Polygon::getShape(), and TraCIServerAPI_Lane::getShape().
Referenced by processSingleSubscription().
|
inlinestatic |
Definition at line 86 of file TraCIServer.h.
References cleanup(), close(), myInstance, openSocket(), postProcessVTD(), processCommandsUntilSimStep(), setVTDControlled(), vehicleStateChanged(), wasClosed(), writeErrorStatusCmd(), and writeStatusCmd().
Referenced by MSNet::clearAll(), GUIRunThread::makeStep(), MSNet::postSimStepOutput(), MSNet::simulate(), MSNet::simulationState(), and MSNet::simulationStep().
|
inline |
Definition at line 80 of file TraCIServer.h.
References myTargetTime.
Referenced by MSNet::simulationStep().
|
inline |
Definition at line 165 of file TraCIServer.h.
References collectObjectsInRange(), myAmEmbedded, myCurrentSocket, mySockets, myVehicleStateChanges, readTypeCheckingBoundary(), readTypeCheckingByte(), readTypeCheckingColor(), readTypeCheckingDouble(), readTypeCheckingInt(), readTypeCheckingPolygon(), readTypeCheckingPosition2D(), readTypeCheckingString(), readTypeCheckingStringList(), readTypeCheckingUnsignedByte(), TraCIServer(), writeResponseWithLength(), and ~TraCIServer().
Referenced by TraCIServerAPI_Simulation::writeVehicleStateIDs(), and TraCIServerAPI_Simulation::writeVehicleStateNumber().
|
private |
Definition at line 1022 of file TraCIServer.cpp.
References TraCIServer::Subscription::beginTime, TraCIServer::Subscription::commandId, TraCIServer::Subscription::contextDomain, TraCIServer::Subscription::contextVars, TraCIServer::Subscription::endTime, MSNet::getCurrentTimeStep(), MSNet::getInstance(), TraCIServer::Subscription::id, myOutputStorage, mySubscriptionCache, mySubscriptions, TraCIServer::Subscription::parameters, processSingleSubscription(), TraCIServer::Subscription::range, tcpip::Storage::readByte(), tcpip::Storage::readInt(), tcpip::Storage::reset(), RTYPE_ERR, RTYPE_OK, tcpip::Storage::size(), tcpip::Storage::valid_pos(), TraCIServer::Subscription::variables, tcpip::Storage::writeByte(), tcpip::Storage::writeInt(), writeStatusCmd(), and tcpip::Storage::writeStorage().
Referenced by addObjectVariableSubscription().
|
inline |
Definition at line 83 of file TraCIServer.h.
References myAmEmbedded.
Referenced by MSNet::simulationStep().
|
private |
get the minimal next target time among all clients
Definition at line 393 of file TraCIServer.cpp.
References max, MIN2(), and mySockets.
Referenced by processCommandsUntilSimStep().
|
static |
Initialises the server.
| [in] | execs | The (additional) command executors to use |
Definition at line 210 of file TraCIServer.cpp.
References MSNet::addVehicleStateListener(), MSNet::getInstance(), OptionsCont::getOptions(), myDoCloseConnection, myExecutors, myInstance, string2time(), and TraCIServer().
Referenced by getInstance(), NLBuilder::loadAndRun(), and GUILoadThread::run().
|
private |
Invalidated assignment operator.
|
private |
Handles subscriptions to send after a simstep2 command.
Definition at line 915 of file TraCIServer.cpp.
References TraCIServer::Subscription::beginTime, CMD_SIMSTEP, CMD_SUBSCRIBE_PERSON_CONTEXT, CMD_SUBSCRIBE_PERSON_VARIABLE, CMD_SUBSCRIBE_VEHICLE_CONTEXT, CMD_SUBSCRIBE_VEHICLE_VARIABLE, TraCIServer::Subscription::commandId, TraCIServer::Subscription::endTime, MSTransportableControl::get(), MSNet::getCurrentTimeStep(), MSNet::getInstance(), MSNet::getPersonControl(), TraCIServer::Subscription::id, myOutputStorage, mySubscriptionCache, mySubscriptions, myVehicleStateChanges, processSingleSubscription(), tcpip::Storage::reset(), RTYPE_OK, tcpip::Storage::size(), MSNet::VEHICLE_STATE_ARRIVED, tcpip::Storage::writeInt(), writeStatusCmd(), and tcpip::Storage::writeStorage().
Referenced by dispatchCommand(), and processCommandsUntilSimStep().
| void TraCIServer::postProcessVTD | ( | ) |
Definition at line 256 of file TraCIServer.cpp.
References MSNet::getInstance(), MSVehicleControl::getVehicle(), MSNet::getVehicleControl(), myVTDControlledVehicles, and WRITE_WARNING.
Referenced by getInstance(), and MSNet::simulationStep().
| void TraCIServer::processCommandsUntilSimStep | ( | SUMOTime | step | ) |
process all commands until the next SUMO simulation step. It is guaranteed that t->getTargetTime() >= myStep after call (except the case that a load or close command is received)s
Definition at line 439 of file TraCIServer.cpp.
References CMD_CLOSE, CMD_LOAD, CMD_SIMSTEP, dispatchCommand(), MSNet::getInstance(), TraCI::getLoadArgs(), myAmEmbedded, myCurrentSocket, myDoCloseConnection, myInputStorage, myOutputStorage, mySockets, myTargetTime, myVehicleStateChanges, nextTargetTime(), postProcessSimulationStep(), processReorderingRequests(), removeCurrentSocket(), tcpip::Storage::reset(), sendOutputToAll(), SIMTIME, tcpip::Storage::size(), tcpip::Storage::valid_pos(), and tcpip::SocketException::what().
Referenced by getInstance(), and MSNet::simulationStep().
|
private |
checks for and processes reordering requests (relevant for multiple clients)
Definition at line 349 of file TraCIServer.cpp.
References mySocketReorderRequests, mySockets, and SIMTIME.
Referenced by processCommandsUntilSimStep().
|
private |
Definition at line 1217 of file TraCIServer.cpp.
References collectObjectsInRange(), TraCIServer::Subscription::commandId, TraCIServer::Subscription::contextDomain, TraCIServer::Subscription::contextVars, findObjectShape(), TraCIServer::Subscription::id, ID_LIST, myExecutors, TraCIServer::Subscription::parameters, TraCIServer::Subscription::range, tcpip::Storage::readInt(), tcpip::Storage::readString(), tcpip::Storage::readUnsignedByte(), RTYPE_ERR, RTYPE_NOTIMPLEMENTED, RTYPE_OK, tcpip::Storage::size(), TYPE_STRING, TraCIServer::Subscription::variables, tcpip::Storage::writeInt(), tcpip::Storage::writePacket(), writeStatusCmd(), tcpip::Storage::writeStorage(), tcpip::Storage::writeString(), and tcpip::Storage::writeUnsignedByte().
Referenced by initialiseSubscription(), and postProcessSimulationStep().
|
private |
Reads the next command ID from the input storage.
| [out] | the | version with reference parameters provides information on the command start position and length used in dispatchCommand for checking purposes |
Definition at line 733 of file TraCIServer.cpp.
References myInputStorage, tcpip::Storage::position(), tcpip::Storage::readInt(), and tcpip::Storage::readUnsignedByte().
Referenced by checkClientOrdering(), and dispatchCommand().
| bool TraCIServer::readTypeCheckingBoundary | ( | tcpip::Storage & | inputStorage, |
| Boundary & | into | ||
| ) |
Reads the value type and a 2D bounding box, verifying the type.
Definition at line 1420 of file TraCIServer.cpp.
References tcpip::Storage::readDouble(), tcpip::Storage::readUnsignedByte(), Boundary::set(), and TYPE_BOUNDINGBOX.
Referenced by getVehicleStateChanges(), and TraCIServerAPI_GUI::processSet().
| bool TraCIServer::readTypeCheckingByte | ( | tcpip::Storage & | inputStorage, |
| int & | into | ||
| ) |
Reads the value type and a byte, verifying the type.
Definition at line 1434 of file TraCIServer.cpp.
References tcpip::Storage::readByte(), tcpip::Storage::readUnsignedByte(), and TYPE_BYTE.
Referenced by getVehicleStateChanges(), and TraCIServerAPI_Vehicle::processSet().
| bool TraCIServer::readTypeCheckingColor | ( | tcpip::Storage & | inputStorage, |
| TraCIColor & | into | ||
| ) |
Reads the value type and a color, verifying the type.
Definition at line 1395 of file TraCIServer.cpp.
References TraCIColor::a, TraCIColor::b, TraCIColor::g, TraCIColor::r, tcpip::Storage::readUnsignedByte(), and TYPE_COLOR.
Referenced by getVehicleStateChanges(), TraCIServerAPI_POI::processSet(), TraCIServerAPI_Polygon::processSet(), TraCIServerAPI_Vehicle::processSet(), and TraCIServerAPI_VehicleType::setVariable().
| bool TraCIServer::readTypeCheckingDouble | ( | tcpip::Storage & | inputStorage, |
| double & | into | ||
| ) |
Reads the value type and a double, verifying the type.
Definition at line 1365 of file TraCIServer.cpp.
References tcpip::Storage::readDouble(), tcpip::Storage::readUnsignedByte(), and TYPE_DOUBLE.
Referenced by getVehicleStateChanges(), TraCIServerAPI_Vehicle::processGet(), TraCIServerAPI_Edge::processSet(), TraCIServerAPI_Vehicle::processSet(), TraCIServerAPI_GUI::processSet(), TraCIServerAPI_Person::processSet(), TraCIServerAPI_Lane::processSet(), and TraCIServerAPI_VehicleType::setVariable().
| bool TraCIServer::readTypeCheckingInt | ( | tcpip::Storage & | inputStorage, |
| int & | into | ||
| ) |
Reads the value type and an int, verifying the type.
Definition at line 1355 of file TraCIServer.cpp.
References tcpip::Storage::readInt(), tcpip::Storage::readUnsignedByte(), and TYPE_INTEGER.
Referenced by getVehicleStateChanges(), TraCIServerAPI_Edge::processGet(), TraCIServerAPI_Vehicle::processGet(), TraCIServerAPI_Person::processGet(), TraCIServerAPI_Edge::processSet(), TraCIServerAPI_POI::processSet(), TraCIServerAPI_TLS::processSet(), TraCIServerAPI_Polygon::processSet(), TraCIServerAPI_Vehicle::processSet(), and TraCIServerAPI_Person::processSet().
| bool TraCIServer::readTypeCheckingPolygon | ( | tcpip::Storage & | inputStorage, |
| PositionVector & | into | ||
| ) |
Reads the value type and a polygon, verifying the type.
Definition at line 1454 of file TraCIServer.cpp.
References tcpip::Storage::readDouble(), tcpip::Storage::readUnsignedByte(), and TYPE_POLYGON.
Referenced by getVehicleStateChanges(), and TraCIServerAPI_Polygon::processSet().
| bool TraCIServer::readTypeCheckingPosition2D | ( | tcpip::Storage & | inputStorage, |
| TraCIPosition & | into | ||
| ) |
Reads the value type and a 2D position, verifying the type.
Definition at line 1408 of file TraCIServer.cpp.
References POSITION_2D, tcpip::Storage::readDouble(), tcpip::Storage::readUnsignedByte(), TraCIPosition::x, TraCIPosition::y, and TraCIPosition::z.
Referenced by getVehicleStateChanges(), TraCIServerAPI_POI::processSet(), and TraCIServerAPI_GUI::processSet().
| bool TraCIServer::readTypeCheckingString | ( | tcpip::Storage & | inputStorage, |
| std::string & | into | ||
| ) |
Reads the value type and a string, verifying the type.
Definition at line 1375 of file TraCIServer.cpp.
References tcpip::Storage::readString(), tcpip::Storage::readUnsignedByte(), and TYPE_STRING.
Referenced by getVehicleStateChanges(), TraCIServerAPI_Edge::processGet(), TraCIServerAPI_POI::processGet(), TraCIServerAPI_TLS::processGet(), TraCIServerAPI_Polygon::processGet(), TraCIServerAPI_VehicleType::processGet(), TraCIServerAPI_Route::processGet(), TraCIServerAPI_Vehicle::processGet(), TraCIServerAPI_Person::processGet(), TraCIServerAPI_Simulation::processGet(), TraCIServerAPI_Lane::processGet(), TraCIServerAPI_Edge::processSet(), TraCIServerAPI_POI::processSet(), TraCIServerAPI_TLS::processSet(), TraCIServerAPI_Polygon::processSet(), TraCIServerAPI_Route::processSet(), TraCIServerAPI_GUI::processSet(), TraCIServerAPI_Vehicle::processSet(), TraCIServerAPI_Simulation::processSet(), TraCIServerAPI_Person::processSet(), TraCIServerAPI_Lane::processSet(), and TraCIServerAPI_VehicleType::setVariable().
| bool TraCIServer::readTypeCheckingStringList | ( | tcpip::Storage & | inputStorage, |
| std::vector< std::string > & | into | ||
| ) |
Reads the value type and a string list, verifying the type.
Definition at line 1385 of file TraCIServer.cpp.
References tcpip::Storage::readStringList(), tcpip::Storage::readUnsignedByte(), and TYPE_STRINGLIST.
Referenced by dispatchCommand(), getVehicleStateChanges(), TraCIServerAPI_Edge::processSet(), TraCIServerAPI_Route::processSet(), TraCIServerAPI_Vehicle::processSet(), TraCIServerAPI_Person::processSet(), and TraCIServerAPI_Lane::processSet().
| bool TraCIServer::readTypeCheckingUnsignedByte | ( | tcpip::Storage & | inputStorage, |
| int & | into | ||
| ) |
Reads the value type and an unsigned byte, verifying the type.
Definition at line 1444 of file TraCIServer.cpp.
References tcpip::Storage::readUnsignedByte(), and TYPE_UBYTE.
Referenced by TraCIServerAPI_Simulation::commandPositionConversion(), getVehicleStateChanges(), and TraCIServerAPI_Polygon::processSet().
|
private |
removes myCurrentSocket from mySockets and returns an iterator pointing to the next member according to the ordering
Definition at line 703 of file TraCIServer.cpp.
References myCurrentSocket, and mySockets.
Referenced by processCommandsUntilSimStep().
|
private |
Definition at line 1072 of file TraCIServer.cpp.
References mySubscriptions, RTYPE_OK, and writeStatusCmd().
Referenced by addObjectVariableSubscription().
|
private |
send out subscription results (actually just the content of myOutputStorage) to clients which will act in this step (i.e. with client target time <= myTargetTime)
Definition at line 417 of file TraCIServer.cpp.
References MSNet::getCurrentTimeStep(), MSNet::getInstance(), myOutputStorage, and mySockets.
Referenced by processCommandsUntilSimStep().
|
private |
sends an empty response to a simstep command to the current client. (This applies to a situation where the TraCI step frequency is higher than the SUMO step frequency)
Definition at line 974 of file TraCIServer.cpp.
References CMD_SIMSTEP, myCurrentSocket, myOutputStorage, mySubscriptionCache, tcpip::Storage::reset(), RTYPE_OK, tcpip::Storage::size(), writeStatusCmd(), and tcpip::Storage::writeStorage().
Referenced by dispatchCommand().
| void TraCIServer::setVTDControlled | ( | MSVehicle * | v, |
| Position | xyPos, | ||
| MSLane * | l, | ||
| double | pos, | ||
| double | posLat, | ||
| double | angle, | ||
| int | edgeOffset, | ||
| ConstMSEdgeVector | route, | ||
| SUMOTime | t | ||
| ) |
Definition at line 248 of file TraCIServer.cpp.
References MSBaseVehicle::getID(), MSVehicle::getInfluencer(), myVTDControlledVehicles, and MSVehicle::Influencer::setVTDControlled().
Referenced by getInstance(), and TraCIServerAPI_Vehicle::processSet().
|
virtual |
Called if a vehicle changes its state.
| [in] | vehicle | The vehicle which changed its state |
| [in] | to | The state the vehicle has changed to |
Implements MSNet::VehicleStateListener.
Definition at line 272 of file TraCIServer.cpp.
References SUMOVehicle::getID(), myAmEmbedded, myDoCloseConnection, mySockets, and myVehicleStateChanges.
Referenced by getInstance().
|
static |
check whether close was requested
Definition at line 242 of file TraCIServer.cpp.
References myDoCloseConnection.
Referenced by getInstance(), GUIRunThread::makeStep(), MSNet::simulate(), MSNet::simulationState(), and MSNet::simulationStep().
| bool TraCIServer::writeErrorStatusCmd | ( | int | commandId, |
| const std::string & | description, | ||
| tcpip::Storage & | outputStorage | ||
| ) |
Writes a status command to the given storage with status = RTYPE_ERR.
| [in] | commandId | The id of the command to respond to |
| [in] | description | The status description (error message, for example) |
Definition at line 1015 of file TraCIServer.cpp.
References RTYPE_ERR, and writeStatusCmd().
Referenced by dispatchCommand(), getInstance(), TraCIServerAPI_Edge::processGet(), TraCIServerAPI_Polygon::processGet(), TraCIServerAPI_Route::processGet(), TraCIServerAPI_TLS::processGet(), TraCIServerAPI_MultiEntryExit::processGet(), TraCIServerAPI_VehicleType::processGet(), TraCIServerAPI_InductionLoop::processGet(), TraCIServerAPI_POI::processGet(), TraCIServerAPI_GUI::processGet(), TraCIServerAPI_Vehicle::processGet(), TraCIServerAPI_Simulation::processGet(), TraCIServerAPI_Person::processGet(), TraCIServerAPI_LaneArea::processGet(), TraCIServerAPI_Lane::processGet(), TraCIServerAPI_Junction::processGet(), TraCIServerAPI_Edge::processSet(), TraCIServerAPI_POI::processSet(), TraCIServerAPI_Polygon::processSet(), TraCIServerAPI_TLS::processSet(), TraCIServerAPI_Route::processSet(), TraCIServerAPI_GUI::processSet(), TraCIServerAPI_Vehicle::processSet(), TraCIServerAPI_Simulation::processSet(), TraCIServerAPI_Person::processSet(), TraCIServerAPI_Lane::processSet(), TraCIServerAPI_VehicleType::processSet(), and TraCIServerAPI_VehicleType::setVariable().
| void TraCIServer::writeResponseWithLength | ( | tcpip::Storage & | outputStorage, |
| tcpip::Storage & | tempMsg | ||
| ) |
Definition at line 1343 of file TraCIServer.cpp.
References tcpip::Storage::size(), tcpip::Storage::writeInt(), tcpip::Storage::writeStorage(), and tcpip::Storage::writeUnsignedByte().
Referenced by getVehicleStateChanges(), TraCIServerAPI_Edge::processGet(), TraCIServerAPI_VehicleType::processGet(), TraCIServerAPI_InductionLoop::processGet(), TraCIServerAPI_MultiEntryExit::processGet(), TraCIServerAPI_POI::processGet(), TraCIServerAPI_Polygon::processGet(), TraCIServerAPI_Route::processGet(), TraCIServerAPI_TLS::processGet(), TraCIServerAPI_Vehicle::processGet(), TraCIServerAPI_GUI::processGet(), TraCIServerAPI_Person::processGet(), TraCIServerAPI_Simulation::processGet(), TraCIServerAPI_LaneArea::processGet(), TraCIServerAPI_Lane::processGet(), and TraCIServerAPI_Junction::processGet().
| void TraCIServer::writeStatusCmd | ( | int | commandId, |
| int | status, | ||
| const std::string & | description, | ||
| tcpip::Storage & | outputStorage | ||
| ) |
Writes a status command to the given storage.
| [in] | commandId | The id of the command to respond to |
| [in] | status | The status to send |
| [in] | description | The status description (error message, for example) |
Definition at line 1001 of file TraCIServer.cpp.
References RTYPE_ERR, RTYPE_NOTIMPLEMENTED, toHex(), WRITE_ERROR, tcpip::Storage::writeString(), and tcpip::Storage::writeUnsignedByte().
Referenced by TraCIServerAPI_Simulation::commandDistanceRequest(), commandGetVersion(), TraCIServerAPI_Simulation::commandPositionConversion(), dispatchCommand(), getInstance(), initialiseSubscription(), postProcessSimulationStep(), TraCIServerAPI_Edge::processGet(), TraCIServerAPI_TLS::processGet(), TraCIServerAPI_VehicleType::processGet(), TraCIServerAPI_MultiEntryExit::processGet(), TraCIServerAPI_POI::processGet(), TraCIServerAPI_Polygon::processGet(), TraCIServerAPI_Route::processGet(), TraCIServerAPI_InductionLoop::processGet(), TraCIServerAPI_Vehicle::processGet(), TraCIServerAPI_GUI::processGet(), TraCIServerAPI_Person::processGet(), TraCIServerAPI_Simulation::processGet(), TraCIServerAPI_LaneArea::processGet(), TraCIServerAPI_Lane::processGet(), TraCIServerAPI_Junction::processGet(), TraCIServerAPI_Edge::processSet(), TraCIServerAPI_TLS::processSet(), TraCIServerAPI_Route::processSet(), TraCIServerAPI_POI::processSet(), TraCIServerAPI_Polygon::processSet(), TraCIServerAPI_Vehicle::processSet(), TraCIServerAPI_GUI::processSet(), TraCIServerAPI_Simulation::processSet(), TraCIServerAPI_Person::processSet(), TraCIServerAPI_Lane::processSet(), TraCIServerAPI_VehicleType::processSet(), processSingleSubscription(), removeSubscription(), sendSingleSimStepResponse(), writeErrorStatusCmd(), and writeStatusCmd().
| void TraCIServer::writeStatusCmd | ( | int | commandId, |
| int | status, | ||
| const std::string & | description | ||
| ) |
Writes a status command to myOutputStorage.
| [in] | commandId | The id of the command to respond to |
| [in] | status | The status to send |
| [in] | description | The status description (error message, for example) |
Definition at line 995 of file TraCIServer.cpp.
References myOutputStorage, and writeStatusCmd().
|
private |
Whether the server runs in embedded mode.
Definition at line 383 of file TraCIServer.h.
Referenced by dispatchCommand(), getVehicleStateChanges(), isEmbedded(), processCommandsUntilSimStep(), TraCIServer(), and vehicleStateChanged().
|
private |
The currently active client socket.
Definition at line 368 of file TraCIServer.h.
Referenced by checkClientOrdering(), cleanup(), dispatchCommand(), getVehicleStateChanges(), processCommandsUntilSimStep(), removeCurrentSocket(), sendSingleSimStepResponse(), TraCIServer(), and ~TraCIServer().
|
staticprivate |
Whether the connection was set to be to close.
Definition at line 355 of file TraCIServer.h.
Referenced by close(), dispatchCommand(), openSocket(), processCommandsUntilSimStep(), TraCIServer(), vehicleStateChanged(), and wasClosed().
|
private |
Map of commandIds -> their executors; applicable if the executor applies to the method footprint.
Definition at line 386 of file TraCIServer.h.
Referenced by dispatchCommand(), openSocket(), processSingleSubscription(), and TraCIServer().
|
private |
The storage to read from.
Definition at line 374 of file TraCIServer.h.
Referenced by addObjectVariableSubscription(), checkClientOrdering(), cleanup(), dispatchCommand(), processCommandsUntilSimStep(), and readCommandID().
|
staticprivate |
Singleton instance of the server.
Definition at line 352 of file TraCIServer.h.
Referenced by cleanup(), close(), getInstance(), and openSocket().
|
private |
A storage of lanes.
Definition at line 452 of file TraCIServer.h.
Referenced by cleanup(), and collectObjectsInRange().
|
private |
A storage of objects.
Definition at line 449 of file TraCIServer.h.
Referenced by cleanup(), and collectObjectsInRange().
|
private |
The storage to writeto.
Definition at line 377 of file TraCIServer.h.
Referenced by checkClientOrdering(), cleanup(), commandGetVersion(), dispatchCommand(), initialiseSubscription(), postProcessSimulationStep(), processCommandsUntilSimStep(), sendOutputToAll(), sendSingleSimStepResponse(), and writeStatusCmd().
|
private |
Map of variable ids to the size of the parameter in bytes.
Definition at line 389 of file TraCIServer.h.
Referenced by addObjectVariableSubscription(), and TraCIServer().
|
private |
The server socket.
Definition at line 358 of file TraCIServer.h.
Referenced by TraCIServer(), and ~TraCIServer().
|
private |
This stores the setOrder(int) requests of the clients.
Definition at line 365 of file TraCIServer.h.
Referenced by dispatchCommand(), and processReorderingRequests().
|
private |
The socket connections to the clients the first component (index) determines the client's order (lowest index's commands are processed first),.
Definition at line 362 of file TraCIServer.h.
Referenced by checkClientOrdering(), cleanup(), dispatchCommand(), getVehicleStateChanges(), nextTargetTime(), processCommandsUntilSimStep(), processReorderingRequests(), removeCurrentSocket(), sendOutputToAll(), TraCIServer(), vehicleStateChanged(), and ~TraCIServer().
|
private |
The last timestep's subscription results.
Definition at line 380 of file TraCIServer.h.
Referenced by cleanup(), initialiseSubscription(), postProcessSimulationStep(), and sendSingleSimStepResponse().
|
private |
The list of known, still valid subscriptions.
Definition at line 437 of file TraCIServer.h.
Referenced by cleanup(), initialiseSubscription(), postProcessSimulationStep(), and removeSubscription().
|
private |
The time step to reach until processing the next commands.
Definition at line 371 of file TraCIServer.h.
Referenced by cleanup(), dispatchCommand(), getTargetTime(), and processCommandsUntilSimStep().
|
private |
Changes in the states of simulated vehicles.
Definition at line 446 of file TraCIServer.h.
Referenced by cleanup(), dispatchCommand(), getVehicleStateChanges(), postProcessSimulationStep(), processCommandsUntilSimStep(), TraCIServer(), and vehicleStateChanged().
|
private |
Definition at line 391 of file TraCIServer.h.
Referenced by postProcessVTD(), and setVTDControlled().