Ejemplo n.º 1
0
 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))
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
 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())
Ejemplo n.º 4
0
 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))
Ejemplo n.º 5
0
 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)
Ejemplo n.º 6
0
 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())