code: def process_frame(self, f, frame_str):
          
          frame_type = f.cmd.lower()
          if frame_type in ['connected', 'message', 'receipt', 'error', 'heartbeat']:
              if frame_type == 'message':
                  (f.headers, f.body) = self.notify('before_message', f.headers, f.body)
              if log.isEnabledFor(logging.DEBUG):
                  log.debug("Received frame: %r, headers=%r, body=%r", f.cmd, f.headers, f.body)
              else:
                  log.info("Received frame: %r, len(body)=%r", f.cmd, utils.length(f.body))
              self.notify(frame_type, f.headers, f.body)
          else:
              log.warning("Unknown response frame type: '%s' (frame length was %d)", frame_type, utils.length(frame_str))
docs: :param Frame f: Frame object
          :param bytes frame_str: raw frame content