docs: def ReceiveMessagesRelationalFlows(self, client_id, messages):
      """Receives and processes messages for flows stored in the relational db.
  
      Args:
        client_id: The client which sent the messages.
        messages: A list of GrrMessage RDFValues.
      """
      now = time.time()
      unprocessed_msgs = []
      message_handler_requests = []
      dropped_count = 0
      for session_id, msgs in iteritems(
          collection.Group(messages, operator.attrgetter("session_id"))):
  
        # Remove and handle messages to WellKnownFlows
        leftover_msgs = self.HandleWellKnownFlows(msgs)
  
        for msg in leftover_msgs:
          if (msg.auth_state != msg.AuthorizationState.AUTHENTICATED and
              msg.session_id != self.unauth_allowed_session_id):
            dropped_count += 1
            continue
  
          if session_id in queue_manager.session_id_map:
            message_handler_requests.append(
                rdf_objects.MessageHandlerRequest(
                    client_id=msg.source.Basename(),
                    handler_name=queue_manager.session_id_map[session_id],
                    request_id=msg.response_id,
                    request=msg.payload))
          else:
            unprocessed_msgs.append(msg)
  
      if dropped_count:
        logging.info("Dropped %d unauthenticated messages for %s", dropped_count,
                     client_id)
  
      if unprocessed_msgs:
        flow_responses = []
        for message in unprocessed_msgs:
          flow_responses.append(
              rdf_flow_objects.FlowResponseForLegacyResponse(message))
  
        data_store.REL_DB.WriteFlowResponses(flow_responses)
  
        for msg in unprocessed_msgs:
          if msg.type == rdf_flows.GrrMessage.Type.STATUS:
            stat = rdf_flows.GrrStatus(msg.payload)
            if stat.status == rdf_flows.GrrStatus.ReturnedStatus.CLIENT_KILLED:
              # A client crashed while performing an action, fire an event.
              crash_details = rdf_client.ClientCrash(
                  client_id=client_id,
                  session_id=msg.session_id,
                  backtrace=stat.backtrace,
                  crash_message=stat.error_message,
                  nanny_status=stat.nanny_status,
                  timestamp=rdfvalue.RDFDatetime.Now())
              events.Events.PublishEvent(
                  "ClientCrash", crash_details, token=self.token)
  
      if message_handler_requests:
        data_store.REL_DB.WriteMessageHandlerRequests(message_handler_requests)
  
      logging.debug("Received %s messages from %s in %s sec", len(messages),
                    client_id,
                    time.time() - now)