__init__.py (1000B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\uthread2\delayedcalls\__init__.py 2 from .. import start_tasklet, sleep_sim, sleep 3 MAX_SINGLE_SLEEP = 86400 4 MAX_TOTAL_DELAY = 1209600 5 6 def call_after_simtime_delay(tasklet_func, delay, *args, **kwargs): 7 return _call_after_delay(delay, sleep_sim, tasklet_func, *args, **kwargs) 8 9 10 def call_after_wallclocktime_delay(tasklet_func, delay, *args, **kwargs): 11 return _call_after_delay(delay, sleep, tasklet_func, *args, **kwargs) 12 13 14 def _call_after_delay(delay, sleep_func, tasklet_func, *args, **kwargs): 15 if delay > MAX_TOTAL_DELAY: 16 raise RuntimeError('Cannot delay a tasklet for more than MAX_TOTAL_DELAY seconds') 17 18 def _worker(_delay): 19 while _delay > MAX_SINGLE_SLEEP: 20 sleep_func(MAX_SINGLE_SLEEP) 21 _delay -= MAX_SINGLE_SLEEP 22 23 sleep_func(_delay) 24 tasklet_func(*args, **kwargs) 25 26 return start_tasklet(_worker, delay, stackless_tracing_enabled=False)