SUMO - Simulation of Urban MObility
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
traci::TraCIServer Class Reference

TraCI server used to control sumo by a remote TraCI client. More...

#include <TraCIServer.h>

Inheritance diagram for traci::TraCIServer:
MSNet::VehicleStateListener

Data Structures

class  Subscription
 Representation of a subscription. More...
 

Public Types

typedef bool(* CmdExecutor )(traci::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 collectObjectsInRange (int domain, const PositionVector &shape, SUMOReal range, std::set< std::string > &into)
 
const std::map
< MSNet::VehicleState,
std::vector< std::string > > & 
getVehicleStateChanges () const
 
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)
 
void writeStatusCmd (int commandId, int status, const std::string &description)
 
void writeStatusCmd (int commandId, int status, const std::string &description, tcpip::Storage &outputStorage)
 

Static Public Member Functions

static void processCommandsUntilSimStep (SUMOTime step)
 process all commands until a simulation step is wanted More...
 
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 addObjectContextSubscription (int commandId)
 
bool addObjectVariableSubscription (int commandId)
 
int dispatchCommand ()
 
bool findObjectShape (int domain, const std::string &id, PositionVector &shape)
 
void initialiseSubscription (const Subscription &s)
 
TraCIServeroperator= (const TraCIServer &s)
 Invalidated assignment operator. More...
 
bool processSingleSubscription (const TraCIServer::Subscription &s, tcpip::Storage &writeInto, std::string &errors)
 
void removeSubscription (int commandId, const std::string &identity, int domain)
 
 TraCIServer (int port=0)
 Constructor. More...
 
virtual ~TraCIServer ()
 Destructor. More...
 
Server-internal command handling
bool commandGetVersion ()
 Returns the TraCI-version. More...
 
bool commandCloseConnection ()
 Indicates the connection as being closed. More...
 
void postProcessSimulationStep2 ()
 Handles subscriptions to send after a simstep2 command. More...
 
bool commandAddVehicle ()
 Adds a vehicle. More...
 

Private Attributes

const bool myAmEmbedded
 Whether the server runs in embedded mode. More...
 
bool myDoingSimStep
 Whether a step is currently done. More...
 
std::map< int, CmdExecutormyExecutors
 Map of commandIds -> their executors; applicable if the executor applies to the method footprint. More...
 
bool myHaveWarnedDeprecation
 Whether the usage of deprecated methods was already reported. More...
 
tcpip::Storage myInputStorage
 The storage to read from. More...
 
std::map< int, TraCIRTree * > myObjects
 A storage of objects. More...
 
tcpip::Storage myOutputStorage
 The storage to writeto. More...
 
tcpip::SocketmySocket
 The socket on which server is listening on. More...
 
std::vector< SubscriptionmySubscriptions
 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...
 

Static Private Attributes

static bool myDoCloseConnection = false
 Whether the connection was set to be to close. More...
 
static TraCIServermyInstance = 0
 Singleton instance of the server. More...
 

Detailed Description

TraCI server used to control sumo by a remote TraCI client.

Definition at line 76 of file TraCIServer.h.

Member Typedef Documentation

typedef bool(* traci::TraCIServer::CmdExecutor)(traci::TraCIServer &server, tcpip::Storage &inputStorage, tcpip::Storage &outputStorage)

Definition of a method to be called for serving an associated commandID.

Definition at line 79 of file TraCIServer.h.

Constructor & Destructor Documentation

traci::TraCIServer::TraCIServer ( int  port = 0)
private

Constructor.

Parameters
[in]portThe port to listen to (to open)

Definition at line 110 of file TraCIServer.cpp.

References tcpip::Socket::accept(), MSNet::addVehicleStateListener(), CMD_GET_EDGE_VARIABLE, CMD_GET_INDUCTIONLOOP_VARIABLE, CMD_GET_JUNCTION_VARIABLE, CMD_GET_LANE_VARIABLE, CMD_GET_MULTI_ENTRY_EXIT_DETECTOR_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_POI_VARIABLE, CMD_SET_POLYGON_VARIABLE, CMD_SET_ROUTE_VARIABLE, CMD_SET_TL_VARIABLE, CMD_SET_VEHICLE_VARIABLE, CMD_SET_VEHICLETYPE_VARIABLE, MSNet::getInstance(), MsgHandler::getWarningInstance(), MSGlobals::gUsingInternalLanes, MsgHandler::inform(), myAmEmbedded, myDoCloseConnection, myExecutors, mySocket, myVehicleStateChanges, TraCIServerAPI_Edge::processGet(), TraCIServerAPI_Route::processGet(), TraCIServerAPI_TLS::processGet(), TraCIServerAPI_POI::processGet(), TraCIServerAPI_Polygon::processGet(), TraCIServerAPI_VehicleType::processGet(), TraCIServerAPI_Junction::processGet(), TraCIServerAPI_Lane::processGet(), TraCIServerAPI_InductionLoop::processGet(), TraCIServerAPI_MeMeDetector::processGet(), TraCIServerAPI_Vehicle::processGet(), TraCIServerAPI_Simulation::processGet(), TraCIServerAPI_Edge::processSet(), TraCIServerAPI_Route::processSet(), TraCIServerAPI_Lane::processSet(), TraCIServerAPI_POI::processSet(), TraCIServerAPI_TLS::processSet(), TraCIServerAPI_Polygon::processSet(), TraCIServerAPI_Vehicle::processSet(), TraCIServerAPI_VehicleType::processSet(), toString(), MSNet::VEHICLE_STATE_ARRIVED, MSNet::VEHICLE_STATE_BUILT, MSNet::VEHICLE_STATE_DEPARTED, MSNet::VEHICLE_STATE_ENDING_TELEPORT, MSNet::VEHICLE_STATE_NEWROUTE, MSNet::VEHICLE_STATE_STARTING_TELEPORT, tcpip::SocketException::what(), WRITE_MESSAGE, and WRITE_WARNING.

traci::TraCIServer::~TraCIServer ( )
privatevirtual

Member Function Documentation

bool traci::TraCIServer::addObjectContextSubscription ( int  commandId)
private
bool traci::TraCIServer::addObjectVariableSubscription ( int  commandId)
private
void traci::TraCIServer::close ( )
static

request termination of connection

Definition at line 191 of file TraCIServer.cpp.

References myDoCloseConnection, and myInstance.

Referenced by MSNet::closeSimulation().

bool traci::TraCIServer::commandCloseConnection ( )
private

Indicates the connection as being closed.

Returns
Always true

Definition at line 475 of file TraCIServer.cpp.

References CMD_CLOSE, myDoCloseConnection, RTYPE_OK, and writeStatusCmd().

Referenced by dispatchCommand().

bool traci::TraCIServer::commandGetVersion ( )
private
int traci::TraCIServer::dispatchCommand ( )
private

Definition at line 362 of file TraCIServer.cpp.

References addObjectContextSubscription(), addObjectVariableSubscription(), CMD_ADDVEHICLE, CMD_CLOSE, CMD_GETVERSION, CMD_SIMSTEP2, 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_MULTI_ENTRY_EXIT_DETECTOR_CONTEXT, CMD_SUBSCRIBE_MULTI_ENTRY_EXIT_DETECTOR_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, commandAddVehicle(), commandCloseConnection(), commandGetVersion(), DELTA_T, MSNet::getInstance(), myAmEmbedded, myDoCloseConnection, myExecutors, myHaveWarnedDeprecation, myInputStorage, myOutputStorage, myTargetTime, tcpip::Storage::position(), postProcessSimulationStep2(), tcpip::Storage::readChar(), tcpip::Storage::readInt(), tcpip::Storage::readUnsignedByte(), RTYPE_ERR, RTYPE_NOTIMPLEMENTED, MSNet::simulationStep(), tcpip::Storage::valid_pos(), WRITE_WARNING, and writeStatusCmd().

Referenced by processCommandsUntilSimStep().

const std::map<MSNet::VehicleState, std::vector<std::string> >& traci::TraCIServer::getVehicleStateChanges ( ) const
inline

Definition at line 123 of file TraCIServer.h.

References myVehicleStateChanges.

Referenced by TraCIServerAPI_Simulation::processGet().

void traci::TraCIServer::openSocket ( const std::map< int, CmdExecutor > &  execs)
static

Initialises the server.

Parameters
[in]execsThe (additional) command executors to use

Definition at line 178 of file TraCIServer.cpp.

References OptionsCont::getOptions(), myDoCloseConnection, myExecutors, and myInstance.

Referenced by GUIApplicationWindow::handleEvent_SimulationLoaded().

TraCIServer& traci::TraCIServer::operator= ( const TraCIServer s)
private

Invalidated assignment operator.

void traci::TraCIServer::removeSubscription ( int  commandId,
const std::string &  identity,
int  domain 
)
private
void traci::TraCIServer::vehicleStateChanged ( const SUMOVehicle *const  vehicle,
MSNet::VehicleState  to 
)
virtual

Called if a vehicle changes its state.

Parameters
[in]vehicleThe vehicle which changed its state
[in]toThe state the vehicle has changed to

Implements MSNet::VehicleStateListener.

Definition at line 210 of file TraCIServer.cpp.

References SUMOVehicle::getID(), OptionsCont::getOptions(), myDoCloseConnection, and myVehicleStateChanges.

bool traci::TraCIServer::wasClosed ( )
static

check whether close was requested

Returns
Whether the connection was closed

Definition at line 201 of file TraCIServer.cpp.

References myDoCloseConnection.

Referenced by GUIRunThread::makeStep(), MSNet::simulate(), and MSNet::simulationState().

void traci::TraCIServer::writeStatusCmd ( int  commandId,
int  status,
const std::string &  description,
tcpip::Storage outputStorage 
)

Field Documentation

const bool traci::TraCIServer::myAmEmbedded
private

Whether the server runs in embedded mode.

Definition at line 204 of file TraCIServer.h.

Referenced by dispatchCommand(), processCommandsUntilSimStep(), and TraCIServer().

bool traci::TraCIServer::myDoCloseConnection = false
staticprivate

Whether the connection was set to be to close.

Definition at line 182 of file TraCIServer.h.

Referenced by close(), commandCloseConnection(), dispatchCommand(), openSocket(), processCommandsUntilSimStep(), TraCIServer(), vehicleStateChanged(), and wasClosed().

bool traci::TraCIServer::myDoingSimStep
private

Whether a step is currently done.

Todo:
: What is this for?

Definition at line 198 of file TraCIServer.h.

Referenced by processCommandsUntilSimStep().

std::map<int, CmdExecutor> traci::TraCIServer::myExecutors
private

Map of commandIds -> their executors; applicable if the executor applies to the method footprint.

Definition at line 207 of file TraCIServer.h.

Referenced by dispatchCommand(), openSocket(), processSingleSubscription(), and TraCIServer().

bool traci::TraCIServer::myHaveWarnedDeprecation
private

Whether the usage of deprecated methods was already reported.

Definition at line 201 of file TraCIServer.h.

Referenced by dispatchCommand().

tcpip::Storage traci::TraCIServer::myInputStorage
private
TraCIServer * traci::TraCIServer::myInstance = 0
staticprivate

Singleton instance of the server.

Definition at line 179 of file TraCIServer.h.

Referenced by close(), openSocket(), and processCommandsUntilSimStep().

std::map<int, TraCIRTree*> traci::TraCIServer::myObjects
private

A storage of objects.

Definition at line 256 of file TraCIServer.h.

Referenced by collectObjectsInRange(), and ~TraCIServer().

tcpip::Storage traci::TraCIServer::myOutputStorage
private
tcpip::Socket* traci::TraCIServer::mySocket
private

The socket on which server is listening on.

Definition at line 185 of file TraCIServer.h.

Referenced by processCommandsUntilSimStep(), TraCIServer(), and ~TraCIServer().

std::vector<Subscription> traci::TraCIServer::mySubscriptions
private

The list of known, still valid subscriptions.

Definition at line 250 of file TraCIServer.h.

Referenced by initialiseSubscription(), postProcessSimulationStep2(), and removeSubscription().

SUMOTime traci::TraCIServer::myTargetTime
private

The time step to reach until processing the next commands.

Definition at line 188 of file TraCIServer.h.

Referenced by dispatchCommand(), and processCommandsUntilSimStep().

std::map<MSNet::VehicleState, std::vector<std::string> > traci::TraCIServer::myVehicleStateChanges
private

Changes in the states of simulated vehicles.

Definition at line 253 of file TraCIServer.h.

Referenced by getVehicleStateChanges(), postProcessSimulationStep2(), processCommandsUntilSimStep(), TraCIServer(), and vehicleStateChanged().


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