Source code for direct.distributed.StagedObject


[docs]class StagedObject: """ Use this class as a mixin to provide an interface for onStage/offStage objects. The idea here is that a DistributedObject could be present and active due to simple visibility, but we want to hide or otherwise disable it for some reason. """ UNKNOWN = -1 OFF = 0 ON = 1
[docs] def __init__(self, initState = UNKNOWN): """ Only sets the initial state of this object. This will not call any "handle" functions. """ self.__state = initState
[docs] def goOnStage(self, *args, **kw): """ If a stage switch is needed, the correct "handle" function will be called. Otherwise, nothing happens. """ # This is the high level function that clients of # your class should call to set the on/off stage state. if not self.isOnStage(): self.handleOnStage(*args, **kw)
[docs] def handleOnStage(self): """ Override this function to provide your on/off stage funcitionality. Don't forget to call down to this one, though. """ self.__state = StagedObject.ON
[docs] def goOffStage(self, *args, **kw): """ If a stage switch is needed, the correct "handle" function will be called. Otherwise, nothing happens. """ # This is the high level function that clients of # your class should call to set the on/off stage state. if not self.isOffStage(): self.handleOffStage(*args, **kw)
[docs] def handleOffStage(self): """ Override this function to provide your on/off stage funcitionality. Don't forget to call down to this one, though. """ self.__state = StagedObject.OFF
[docs] def isOnStage(self): return self.__state == StagedObject.ON
[docs] def isOffStage(self): return self.__state == StagedObject.OFF