'A generator that yields (token_hex, fail_time) pairs retrieved from
the APNs feedback server'

def items(self):

    buff = ''
    for chunk in self._chunks():
        buff += chunk
        if (not buff):
            break
        if (len(buff) < 6):
            break
        while (len(buff) > 6):
            token_length = APNs.unpacked_ushort_big_endian(buff[4:6])
            bytes_to_read = (6 + token_length)
            if (len(buff) >= bytes_to_read):
                fail_time_unix = APNs.unpacked_uint_big_endian(buff[0:4])
                fail_time = datetime.utcfromtimestamp(fail_time_unix)
                token = b2a_hex(buff[6:bytes_to_read])
                (yield (token, fail_time))
                buff = buff[bytes_to_read:]
            else:
                break
