A Python port of the Invisible Internet Project (I2P)
at main 58 lines 1.4 kB view raw
1"""FrequencyStat — named multi-period frequency coordinator. 2 3Ported from net.i2p.stat.FrequencyStat. 4""" 5 6from typing import List, Optional 7 8from i2p_stat.frequency import Frequency 9 10 11class FrequencyStat: 12 """A named statistic containing Frequency objects for multiple periods.""" 13 14 def __init__( 15 self, 16 name: str, 17 description: str, 18 group: str, 19 periods: List[int], 20 ) -> None: 21 self._name = name 22 self._description = description 23 self._group = group 24 self._frequencies = [Frequency(p) for p in periods] 25 26 @property 27 def name(self) -> str: 28 return self._name 29 30 @property 31 def group_name(self) -> str: 32 return self._group 33 34 @property 35 def description(self) -> str: 36 return self._description 37 38 def get_periods(self) -> List[int]: 39 return [f.period for f in self._frequencies] 40 41 def get_frequency(self, period: int) -> Optional[Frequency]: 42 for f in self._frequencies: 43 if f.period == period: 44 return f 45 return None 46 47 def event_occurred(self) -> None: 48 for f in self._frequencies: 49 f.event_occurred() 50 51 def coalesce_stats(self) -> None: 52 for f in self._frequencies: 53 f.recalculate() 54 55 def get_event_count(self) -> int: 56 if self._frequencies: 57 return self._frequencies[0].get_event_count() 58 return 0