Handles messages from GRR clients received via Fleetspeak.

    This method updates the last-ping timestamp of the client before beginning
    processing.

    Args:
      fs_client_id: The Fleetspeak client-id for the client.
      grr_messages: An Iterable of GrrMessages.

def _ProcessGRRMessages(self, fs_client_id, grr_messages):
    """Handles messages from GRR clients received via Fleetspeak.

    This method updates the last-ping timestamp of the client before beginning
    processing.

    Args:
      fs_client_id: The Fleetspeak client-id for the client.
      grr_messages: An Iterable of GrrMessages.
    """
    grr_client_id = fleetspeak_utils.FleetspeakIDToGRRID(fs_client_id)
    for grr_message in grr_messages:
      grr_message.source = grr_client_id
      grr_message.auth_state = (
          rdf_flows.GrrMessage.AuthorizationState.AUTHENTICATED)
    client_is_new = self.frontend.EnrolFleetspeakClient(client_id=grr_client_id)
    if not client_is_new and data_store.RelationalDBEnabled():
      data_store.REL_DB.WriteClientMetadata(
          grr_client_id, last_ping=rdfvalue.RDFDatetime.Now())
    self.frontend.ReceiveMessages(
        client_id=grr_client_id, messages=grr_messages)