'Scans for stored records.
Scans through the collection, returning stored values ordered by timestamp.
Args:
type_name: Type of the records to scan.
after_timestamp: If set, only returns values recorded after timestamp.
include_suffix: If true, the timestamps returned are pairs of the form
(micros_since_epoc, suffix) where suffix is a 24 bit random refinement
to avoid collisions. Otherwise only micros_since_epoc is returned.
max_records: The maximum number of records to return. Defaults to
unlimited.
Yields:
Pairs (timestamp, rdf_value), indicating that rdf_value was stored at
timestamp.'

def ScanByType(self, type_name, after_timestamp=None, include_suffix=False, max_records=None):

    sub_collection_urn = self.collection_id.Add(type_name)
    sub_collection = sequential_collection.GrrMessageCollection(sub_collection_urn, token=self.token)
    for item in sub_collection.Scan(after_timestamp=after_timestamp, include_suffix=include_suffix, max_records=max_records):
        (yield item)
