Return unclaimed hunt result notifications for collection.

    Args:
      token: The security token to perform database operations with.
      start_time: If set, an RDFDateTime indicating at what point to start
        claiming notifications. Only notifications with a timestamp after this
        point will be claimed.
      lease_time: How long to claim the notifications for.
      collection: The urn of the collection to find notifications for. If unset,
        the earliest (unclaimed) notification will determine the collection.

    Returns:
      A pair (collection, results) where collection is the collection
      that notifications were retrieved for and results is a list of
      Record objects which identify GrrMessage within the result
      collection.

def ClaimNotificationsForCollection(cls,
                                      token=None,
                                      start_time=None,
                                      lease_time=200,
                                      collection=None):
    """Return unclaimed hunt result notifications for collection.

    Args:
      token: The security token to perform database operations with.
      start_time: If set, an RDFDateTime indicating at what point to start
        claiming notifications. Only notifications with a timestamp after this
        point will be claimed.
      lease_time: How long to claim the notifications for.
      collection: The urn of the collection to find notifications for. If unset,
        the earliest (unclaimed) notification will determine the collection.

    Returns:
      A pair (collection, results) where collection is the collection
      that notifications were retrieved for and results is a list of
      Record objects which identify GrrMessage within the result
      collection.
    """

    class CollectionFilter(object):

      def __init__(self, collection):
        self.collection = collection

      def FilterRecord(self, notification):
        if self.collection is None:
          self.collection = notification.result_collection_urn
        return self.collection != notification.result_collection_urn

    f = CollectionFilter(collection)
    results = []
    with aff4.FACTORY.OpenWithLock(
        RESULT_NOTIFICATION_QUEUE,
        aff4_type=HuntResultQueue,
        lease_time=300,
        blocking=True,
        blocking_sleep_interval=15,
        blocking_lock_timeout=600,
        token=token) as queue:
      for record in queue.ClaimRecords(
          record_filter=f.FilterRecord,
          start_time=start_time,
          timeout=lease_time,
          limit=100000):
        results.append(record)
    return (f.collection, results)