@@ -23,9 +23,10 @@ class MeasureToViewMap(object):
2323 specific View Datas
2424
2525 """
26+
2627 def __init__ (self ):
2728 # stores the one-to-many mapping from Measures to View Datas
28- self ._map = defaultdict (list )
29+ self ._measure_to_view_data_list_map = defaultdict (list )
2930 # stores a map from the registered View names to the Views
3031 self ._registered_views = {}
3132 # stores a map from the registered Measure names to the Measures
@@ -44,11 +45,14 @@ def get_view(self, view_name, timestamp):
4445 if view is None :
4546 return None
4647
47- views = self ._map .get (view .measure .name )
48- if views is not None :
49- for view_data in views :
48+ view_data_list = self ._measure_to_view_data_list_map .get (
49+ view .measure .name )
50+ if view_data_list is not None :
51+ for view_data in view_data_list :
5052 if view_data .view .name == view_name :
51- return copy .deepcopy (view_data )
53+ view_data_copy = copy .deepcopy (view_data )
54+ view_data_copy .end ()
55+ return view_data_copy
5256
5357 def filter_exported_views (self , all_views ):
5458 """returns the subset of the given view that should be exported"""
@@ -72,24 +76,22 @@ def register_view(self, view, timestamp):
7276 if registered_measure is not None and registered_measure != measure :
7377 logging .warning (
7478 "A different measure with the same name is already registered" )
75- self ._registered_views [measure .name ] = view
79+ self ._registered_views [view .name ] = view
7680 if registered_measure is None :
7781 self ._registered_measures [measure .name ] = measure
78- self ._map [view .measure .name ].append (ViewData (view = view ,
79- start_time = timestamp ,
80- end_time = timestamp ))
82+ self ._measure_to_view_data_list_map [view .measure .name ].append (
83+ ViewData (view = view , start_time = timestamp , end_time = timestamp ))
8184
8285 def record (self , tags , measurement_map , timestamp ):
8386 """records stats with a set of tags"""
8487 for measure , value in measurement_map .items ():
8588 if measure != self ._registered_measures .get (measure .name ):
8689 return
8790 view_datas = []
88- for key , value in self . _map . items ():
89- if key == measure . name :
90- # note that self._map is a multi-map.
91- view_datas .extend (self . _map [ key ] )
91+ for measure_name , view_data_list \
92+ in self . _measure_to_view_data_list_map . items () :
93+ if measure_name == measure . name :
94+ view_datas .extend (view_data_list )
9295 for view_data in view_datas :
93- view_data .record (context = tags ,
94- value = view_data .view .measure ,
95- timestamp = timestamp )
96+ view_data .record (
97+ context = tags , value = value , timestamp = timestamp )
0 commit comments