def try_prolong(self): try: self.lock = self.ezekiel.prolong_tmp_lock(self.object_id, self.lock.token) except Exception as e: self.request.write(make_event(e, 'exception')) self.lock = None self.stop() self.request.finish() else: self.request.write(make_event(self.lock, 'prolonged'))
def try_acquire(self): lock = self.ezekiel.acquire_lock(self.object_id, self.locker) if hasattr(lock, 'token'): self.lock = lock self.request.write(make_event(lock, 'acquired')) self.lc.stop() self.lc = LoopingCall(self.try_prolong) self.lc.start(self.ezekiel.long_timeout / 2, False) else: self.request.write(make_event(lock, 'rejected'))
def __init__(self, object_id, locker, request, ezekiel): self.object_id = object_id self.locker = locker self.request = request self.ezekiel = ezekiel self.lock = None self.lc = None self.ka = LoopingCall(self.request.write, make_event(None, 'ping'))
def send(self, message): """ :type message: simargl.message.Message :param message: :return: """ if message.control: return event = make_event(message) for request in self.requests: if not (message.recipient and request.user != message.recipient): request.write(event)