open_toontown_panda3d/direct/src/distributed/DelayDelete.py

34 lines
1.4 KiB
Python

"""DelayDelete module: contains the DelayDelete class"""
class DelayDelete:
"""
The DelayDelete class is a special class whose sole purpose is
management of the DistributedObject.delayDelete() counter.
Normally, a DistributedObject has a delayDelete count of 0. When
we need to bracket a region of code that cannot tolerate a
DistributedObject being deleted, we call do.delayDelete(1) to
increment the delayDelete count by 1. While the count is nonzero,
the object will not be deleted. Outside of our critical code, we
call do.delayDelete(0) to decrement the delayDelete count and
allow the object to be deleted once again.
Explicit management of this counter is tedious and risky. This
class implicitly manages the counter by incrementing the count in
the constructor, and decrementing it in the destructor. This
guarantees that every increment is matched up by a corresponding
decrement.
Thus, to temporarily protect a DistributedObject from deletion,
simply create a DelayDelete object. While the DelayDelete object
exists, the DistributedObject will not be deleted; when the
DelayDelete object ceases to exist, it may be deleted.
"""
def __init__(self, distObj):
self.distObj = distObj
self.distObj.delayDelete(1)
def __del__(self):
self.distObj.delayDelete(0)