def run(self): while True: msg = self.__conn.readMessage(False) if msg is None: time.sleep(1) continue for obj in msg: notifier = DataModel.Notifier_Cast(obj) if notifier: RequestHandler.dataLock.acquire() try: notifier.apply() self.__rh.updateInventory() finally: RequestHandler.dataLock.release()
def send_notifiers(self, group): Nsize = DataModel.Notifier.Size() if Nsize > 0: Logging.info("trying to apply %d change%s" % (Nsize, "s" if Nsize != 1 else "")) else: Logging.info("no changes to apply") return 0 Nmsg = DataModel.Notifier.GetMessage(True) it = Nmsg.iter() msg = DataModel.NotifierMessage() maxmsg = 100 sent = 0 mcount = 0 try: try: while it.get(): msg.attach(DataModel.Notifier_Cast(it.get())) mcount += 1 if msg and mcount == maxmsg: sent += mcount Logging.debug("sending message (%5.1f %%)" % (sent / float(Nsize) * 100.0)) self.send(group, msg) msg.clear() mcount = 0 self.sync() it.next() except: pass finally: if msg.size(): Logging.debug("sending message (%5.1f %%)" % 100.0) self.send(group, msg) msg.clear() self.sync() Logging.info("done") return mcount