-
Notifications
You must be signed in to change notification settings - Fork 6
/
shared.py
31 lines (22 loc) · 861 Bytes
/
shared.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
from dataclasses import dataclass
from typing import Any, Optional
TimePoint = int
TimeDuration = int
# TimeInterval represents time interval with both sided included
@dataclass
class TimeInterval:
begin: TimePoint
end: TimePoint
# is_in returns is timepoint inside interval with both sided included
def is_in(self, timepoint: TimePoint) -> bool:
return timepoint >= self.begin and timepoint <= self.end
def length(self) -> TimeDuration:
return self.end - self.begin
def intersect(self, other: Any) -> Optional[Any]:
res = TimeInterval(max(self.begin, other.begin), min(self.end, other.end))
if res.begin > res.end:
return None
return res
TIME_DURATION_SECOND: TimeDuration = 1_000_000_000 # precision of nanoseconds
TIME_DURATION_MS: TimeDuration = 1_000_000
MEAN_RTT_MS = 5