239 if (myRouterProvider ==
nullptr) {
240 myRouterProvider = routerProvider;
246 return myRouterProvider->getVehicleRouter(svc);
248 virtual ~WorkerThread() {
250 delete myRouterProvider;
std::vector< MSEdge * > MSEdgeVector
std::vector< MSEdge * > MSEdgeVector
SUMOVehicleClass
Definition of vehicle classes to differ between different lane usage and authority types.
A pool of worker threads which distributes the tasks and collects the results.
A thread repeatingly calculating incoming tasks.
Stores edges and lanes, performs moving of vehicle.
MSEdgeControl & operator=(const MSEdgeControl &)
Assignment operator.
void patchActiveLanes()
Resets information whether a lane is active for all lanes.
std::vector< StopWatch< std::chrono::nanoseconds > > myStopWatch
~MSEdgeControl()
Destructor.
void setMesoTypes()
update meso edge type parameters
void setAdditionalRestrictions()
apply additional restrictions
MSEdgeControl(const MSEdgeControl &)
Copy constructor.
FXSynchSet< MSLane *, std::set< MSLane *, ComparatorNumericalIdLess > > myInactiveCheckCollisions
Additional lanes for which collision checking must be performed.
std::list< MSLane * > myActiveLanes
The list of active (not empty) lanes.
void detectCollisions(SUMOTime timestep, const std::string &stage)
Detect collisions.
std::vector< LaneUsage > LaneUsageVector
Definition of a container about a lane's number of vehicles and neighbors.
MSEdgeVector myEdges
Loaded edges.
RouterProvider< MSEdge, MSLane, MSJunction, SUMOVehicle > MSRouterProvider
const MSEdgeVector & getEdges() const
Returns loaded edges.
void setJunctionApproaches(SUMOTime t)
Register junction approaches for all vehicles after velocities have been planned. This is a prerequis...
void executeMovements(SUMOTime t)
Executes planned vehicle movements with regards to right-of-way.
LaneUsageVector myLanes
Information about lanes' number of vehicles and neighbors.
void gotActive(MSLane *l)
Informs the control that the given lane got active.
void checkCollisionForInactive(MSLane *l)
trigger collision checking for inactive lane
std::vector< SUMOTime > myLastLaneChange
The list of active (not empty) lanes.
std::set< MSLane *, ComparatorNumericalIdLess > myChangedStateLanes
Lanes which changed the state without informing the control.
void planMovements(SUMOTime t)
Compute safe velocities for all vehicles based on positions and speeds from the last time step....
FXSynchQue< MSLane *, std::vector< MSLane * > > myWithVehicles2Integrate
A storage for lanes which shall be integrated because vehicles have moved onto them.
void changeLanes(const SUMOTime t)
Moves (precomputes) critical vehicles.
MSEdgeControl(const std::vector< MSEdge * > &edges)
Constructor.
void needsVehicleIntegration(MSLane *const l)
double myMinLengthGeometryFactor
A road/street connecting two junctions.
The base class for an intersection.
Representation of a lane in the micro simulation.
Static storage of an output device and its base (abstract) implementation.
A structure holding some basic information about a simulated lane.
bool amActive
Information whether this lane is active.
bool haveNeighbors
Information whether this lane belongs to a multi-lane edge.
MSLane * lane
The described lane.