blueTaskletImplementation.py (1241B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\ccpProfile\blueTaskletImplementation.py 2 import blue 3 from . import decorator 4 EnterTasklet = blue.pyos.taskletTimer.EnterTasklet 5 ReturnFromTasklet = blue.pyos.taskletTimer.ReturnFromTasklet 6 GetCurrent = blue.pyos.taskletTimer.GetCurrent 7 8 class Timer(object): 9 __slots__ = ['ctxt'] 10 11 def __init__(self, context): 12 self.ctxt = context 13 14 def __enter__(self): 15 self.ctxt = EnterTasklet(self.ctxt) 16 17 def __exit__(self, *_): 18 ReturnFromTasklet(self.ctxt) 19 20 21 class TimerPush(Timer): 22 GetCurrent = blue.pyos.taskletTimer.GetCurrent 23 24 def __init__(self, context): 25 fullctx = '::'.join((self.GetCurrent(), context)) 26 Timer.__init__(self, fullctx) 27 28 29 def TimedFunction(context = None): 30 31 def Wrapper(function, *args, **kwargs): 32 newContext = EnterTasklet(context or repr(function)) 33 try: 34 return function(*args, **kwargs) 35 finally: 36 ReturnFromTasklet(newContext) 37 38 return decorator.decorator(Wrapper) 39 40 41 def PushTimer(context): 42 return EnterTasklet(context) 43 44 45 def PopTimer(context): 46 return ReturnFromTasklet(context) 47 48 49 def CurrentTimer(): 50 return GetCurrent()