def _match_or_cache(self, header, pdu_bytes): for template, func, handler_filter in self._handlers: if self._matches(header, template.header_parameters, handler_filter): msg_to_be_sent = self._to_msg(template, header, pdu_bytes) logger.debug("Calling handler %s for message %s" % (func, msg_to_be_sent)) self._get_call_handler(func)(self._protocol.library, msg_to_be_sent) return self._cache.append((header, pdu_bytes))
def _try_matching_cached_to_templates(self): if not self._cache: return for template, func, handler_filter in self._handlers: msg = self._get_from_cache(template, template.header_parameters, handler_filter, False) if msg: logger.debug("Calling handler %s for cached message %s" % (func, msg)) self._get_call_handler(func)(self._protocol.library, msg)
def match_handlers(self): try: while True: with LOCK: self._try_matching_cached_to_templates() header, pdu_bytes = self._protocol.read(self._stream, timeout=0.01) self._match_or_cache(header, pdu_bytes) except Exception: logger.debug("failure in matching cache %s" % traceback.format_exc())
def _match_or_cache(self, header, pdu_bytes): for template, func, handler_filter in self._handlers: if self._matches(header, template.header_parameters, handler_filter): msg_to_be_sent = self._to_msg(template, header, pdu_bytes) logger.debug("Calling handler %s for message %s" % (func, msg_to_be_sent)) self._call_handler_function(func, msg_to_be_sent) return self._cache.append((header, pdu_bytes))
def _try_matching_cached_to_templates(self): if not self._cache: return for template, func, handler_filter in self._handlers: msg = self._get_from_cache(template, template.header_parameters, handler_filter, False) if msg: logger.debug("Calling handler %s for cached message %s" % (func, msg)) self._call_handler_function(func, msg)
def match_handlers(self): try: while True: with self._lock: self._try_matching_cached_to_templates() header, pdu_bytes = self._protocol.read(self._stream, timeout=0.01) self._match_or_cache(header, pdu_bytes) except Exception: logger.debug("failure in matching cache %s" % traceback.format_exc())