def cancel(self, sn=None, criteria=None): """ Cancel by serial number or user defined property. :param sn: An RMI serial number. :type sn: str :param criteria: The criteria used to match the *data* property on an RMI request. :type criteria: dict :return: The list of cancelled serial numbers. :rtype: list :raise Exception, on (sn) not found. :see: gofer.rmi.criteria """ sn_list = [] cancelled = [] tracker = Tracker() if sn: sn_list = [sn] if criteria: b = Builder() criteria = b.build(criteria) sn_list = tracker.find(criteria) for sn in sn_list: _sn = tracker.cancel(sn) if _sn: cancelled.append(_sn) return cancelled
class Cancelled: """ A callable added to the Context and used by plugin methods to check for cancellation. :ivar tracker: The cancellation tracker. :type tracker: Tracker """ def __init__(self, sn): """ :param sn: Serial number. :type sn: str """ self.sn = sn self.tracker = Tracker() def __call__(self): return self.tracker.cancelled(self.sn) def __del__(self): try: self.tracker.remove(self.sn) except KeyError: # already cleaned up pass
def __init__(self, sn): """ :param sn: Serial number. :type sn: str """ self.sn = sn self.tracker = Tracker()
def __init__(self, sn): """ :param sn: The current request serial number. :type sn: str """ self.sn = sn self.tracker = Tracker()
class Cancelled(object): """ A callable added to the Context and used by plugin methods to check for cancellation. :ivar sn: The current request serial number. :type sn: str :ivar tracker: The cancellation tracker. :type tracker: Tracker """ def __init__(self, sn): """ :param sn: The current request serial number. :type sn: str """ self.sn = sn self.tracker = Tracker() def __call__(self): return self.tracker.cancelled(self.sn) def __del__(self): try: self.tracker.remove(self.sn) except KeyError: # already cleaned up pass
def _put(self, request, jnl_path): """ Enqueue the request. :param request: An AMQP request. :type request: Document :param jnl_path: Path to the associated journal file. :type jnl_path: str """ request.ts = time() tracker = Tracker() tracker.add(request.sn, request.data) self.journal[request.sn] = jnl_path self.queue.put(request)