Example #1
0
 def handle_get(self, namespace, sender, blocking=True):
     q = self.get_q(namespace)
     if q.pq.is_empty():
         if blocking:
             q.gq.add(sender)
         else:
             send_multi(self.socket, [sender, ZNull, "ZQueue.Empty"])
     else:
         item_id, item = q.pq.pop_item()
         self.assign_item(namespace, item_id, item, sender)
Example #2
0
 def xreply(self, sender, message):
     arguments = process_command(message)
     if len(arguments) == 2:
         arguments.append("")
     try:
         namespace, command, argument = arguments
     except ValueError:
         return send_multi(self.socket, [sender, ZNull, super(ZQueue, self).reply(message)])
     # print namespace, command
     if command == "get":
         self.qm.handle_get(namespace, sender)
     elif command == "nbget":
         self.qm.handle_get(namespace, sender, blocking=False)
     elif command.startswith("delete"):
         self.qm.handle_delete(namespace, argument)
         send_multi(self.socket, [sender, ZNull, "ack"])
     elif command.startswith("add"):
         item_id = self.qm.handle_add(namespace, argument)
         send_multi(self.socket, [sender, ZNull, str(item_id)])
     elif command.startswith("reset"):
         self.qm.handle_reset(namespace, argument)
         send_multi(self.socket, [sender, ZNull, "ack"])
     else:
         log("Unknown command: %s" % command)
         send_multi(self.socket, [sender, ZNull, "Unknown command: %s" % command])
Example #3
0
 def thread_quit(self):
     for namespaced_queue in self.qm.qs.values():
         while not namespaced_queue.gq.is_empty():
             send_multi(self.socket, [namespaced_queue.gq.pop_getter(), ZNull, "ZQueue.Shutdown"])
     self.qm.resetter.shutdown()
     super(ZQueue, self).thread_quit()
Example #4
0
 def assign_item(self, namespace, item_id, item, requester):
     send_multi(self.socket, [requester, ZNull, item_id + ":" + item])
     key = "%s:reset:%s" % (namespace, item_id)
     self.assigned_items[key] = DelayedResetter(key, requester, self.resetter)
     self.assigned_items[key].start()