Eclipse SUMO - Simulation of Urban MObility
Subscription.h
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2001-2019 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials
5 // are made available under the terms of the Eclipse Public License v2.0
6 // which accompanies this distribution, and is available at
7 // http://www.eclipse.org/legal/epl-v20.html
8 // SPDX-License-Identifier: EPL-2.0
9 /****************************************************************************/
15 // Subscription representation for libsumo and TraCI
16 /****************************************************************************/
17 #ifndef Subscription_h
18 #define Subscription_h
19 
20 
21 // ===========================================================================
22 // included modules
23 // ===========================================================================
24 #include <vector>
25 #include <libsumo/TraCIDefs.h>
26 
27 
28 // ===========================================================================
29 // class definitions
30 // ===========================================================================
31 namespace libsumo {
32 
36  // No filters
38  // Filter by list of lanes relative to ego vehicle
40  // Exclude vehicles on opposite (and other) lanes from context subscription result
42  // Specify maximal downstream distance for vehicles in context subscription result
44  // Specify maximal upstream distance for vehicles in context subscription result
46  // Only return leader and follower on specified lanes in context subscription result
48  // Only return foes on upcoming junction in context subscription result
49  SUBS_FILTER_TURN = 1 << 6,
50  // Only return vehicles of the given vClass in context subscription result
52  // Only return vehicles of the given vType in context subscription result
54  // Filter category for measuring distances along the road network instead of using the usual rtree query
56  // Filter category for maneuver filters
58 };
59 
60 
61 
65 class Subscription {
66 public:
76  Subscription(int commandIdArg, const std::string& idArg,
77  const std::vector<int>& variablesArg, const std::vector<std::vector<unsigned char> >& paramsArg,
78  SUMOTime beginTimeArg, SUMOTime endTimeArg, int contextDomainArg, double rangeArg)
79  : commandId(commandIdArg), id(idArg), variables(variablesArg), parameters(paramsArg), beginTime(beginTimeArg), endTime(endTimeArg),
80  contextDomain(contextDomainArg), range(rangeArg), activeFilters(SUBS_FILTER_NONE),
82 
84  int commandId;
86  std::string id;
88  std::vector<int> variables;
90  std::vector<std::vector<unsigned char> > parameters;
98  double range;
99 
103  std::vector<int> filterLanes;
109  std::set<std::string> filterVTypes;
112 };
113 
115 public:
117  typedef bool(*SubscriptionHandler)(const std::string& objID, const int variable, VariableWrapper* wrapper);
118  VariableWrapper(SubscriptionHandler handler = nullptr) : handle(handler) {}
119  SubscriptionHandler handle;
120  virtual void setContext(const std::string& /* refID */) {}
121  virtual void clear() {}
122  virtual bool wrapDouble(const std::string& objID, const int variable, const double value) = 0;
123  virtual bool wrapInt(const std::string& objID, const int variable, const int value) = 0;
124  virtual bool wrapString(const std::string& objID, const int variable, const std::string& value) = 0;
125  virtual bool wrapStringList(const std::string& objID, const int variable, const std::vector<std::string>& value) = 0;
126  virtual bool wrapPosition(const std::string& objID, const int variable, const TraCIPosition& value) = 0;
127  virtual bool wrapColor(const std::string& objID, const int variable, const TraCIColor& value) = 0;
128  virtual bool wrapRoadPosition(const std::string& objID, const int variable, const TraCIRoadPosition& value) = 0;
129 };
130 }
131 
132 
133 #endif
Representation of a subscription.
Definition: Subscription.h:65
long long int SUMOTime
Definition: SUMOTime.h:35
double range
The range of the context.
Definition: Subscription.h:98
An edgeId, position and laneIndex.
Definition: TraCIDefs.h:122
Subscription(int commandIdArg, const std::string &idArg, const std::vector< int > &variablesArg, const std::vector< std::vector< unsigned char > > &paramsArg, SUMOTime beginTimeArg, SUMOTime endTimeArg, int contextDomainArg, double rangeArg)
Constructor.
Definition: Subscription.h:76
virtual void setContext(const std::string &)
Definition: Subscription.h:120
VariableWrapper(SubscriptionHandler handler=nullptr)
Definition: Subscription.h:118
SUMOTime beginTime
The begin time of the subscription.
Definition: Subscription.h:92
SUMOTime endTime
The end time of the subscription.
Definition: Subscription.h:94
std::string id
The id of the object that is subscribed.
Definition: Subscription.h:86
SubscriptionFilterType
Filter types for context subscriptions.
Definition: Subscription.h:35
int commandId
commandIdArg The command id of the subscription
Definition: Subscription.h:84
int activeFilters
Active filters for the subscription (bitset,.
Definition: Subscription.h:101
int contextDomain
The domain ID of the context.
Definition: Subscription.h:96
double filterDownstreamDist
Downstream distance specified by the downstream distance filter.
Definition: Subscription.h:105
int filterVClasses
vClasses specified by the vClasses filter,
Definition: Subscription.h:111
std::set< std::string > filterVTypes
vTypes specified by the vTypes filter
Definition: Subscription.h:109
double filterUpstreamDist
Upstream distance specified by the upstream distance filter.
Definition: Subscription.h:107
Definition: Edge.cpp:30
std::vector< std::vector< unsigned char > > parameters
The parameters for the subscribed variables.
Definition: Subscription.h:90
SubscriptionHandler handle
Definition: Subscription.h:119
std::vector< int > variables
The subscribed variables.
Definition: Subscription.h:88
A 3D-position.
Definition: TraCIDefs.h:110
std::vector< int > filterLanes
lanes specified by the lanes filter
Definition: Subscription.h:103