public Response listRecentSessionsPaginated()

in java/core/src/main/java/com/aliyun/openservices/tablestore/agent/memory/MemoryStoreImpl.java [306:366]


    public Response<Session> listRecentSessionsPaginated(
        String userId,
        int pageSize,
        Filter metadataFilter,
        Long inclusiveStartUpdateTime,
        Long inclusiveEndUpdateTime,
        String nextToken,
        Integer batchSize
    ) {
        log.info(
            "list recent sessions paginated, userId:{}, pageSize:{}, metadataFilter:{}, inclusiveStartUpdateTime:{}, inclusiveEndUpdateTime:{}, nextToken:{}, batchSize:{}",
            userId,
            pageSize,
            metadataFilter,
            inclusiveStartUpdateTime,
            inclusiveEndUpdateTime,
            nextToken,
            batchSize
        );
        ValidationUtils.ensureNotNull(userId, "userId");
        if (inclusiveStartUpdateTime != null && inclusiveEndUpdateTime != null && inclusiveStartUpdateTime < inclusiveEndUpdateTime) {
            throw Exceptions.illegalArgument(
                "inclusiveStartUpdateTime must be greater than inclusiveEndUpdateTime, because the results are returned in reverse order of update time"
            );
        }
        PrimaryKey start = PrimaryKeyBuilder.createPrimaryKeyBuilder()
            .addPrimaryKeyColumn(Session.SESSION_USER_ID, PrimaryKeyValue.fromString(userId))
            .addPrimaryKeyColumn(
                Session.SESSION_UPDATE_TIME,
                inclusiveStartUpdateTime == null ? PrimaryKeyValue.INF_MAX : PrimaryKeyValue.fromLong(inclusiveStartUpdateTime)
            )
            .addPrimaryKeyColumn(Session.SESSION_SESSION_ID, PrimaryKeyValue.INF_MAX)
            .build();
        if (nextToken != null) {
            start = TablestoreHelper.decodeNextPrimaryKeyToken(nextToken);
        }
        PrimaryKey end = PrimaryKeyBuilder.createPrimaryKeyBuilder()
            .addPrimaryKeyColumn(Session.SESSION_USER_ID, PrimaryKeyValue.fromString(userId))
            .addPrimaryKeyColumn(
                Session.SESSION_UPDATE_TIME,
                inclusiveEndUpdateTime == null ? PrimaryKeyValue.INF_MIN : PrimaryKeyValue.fromLong(inclusiveEndUpdateTime)
            )
            .addPrimaryKeyColumn(Session.SESSION_SESSION_ID, PrimaryKeyValue.INF_MIN)
            .build();
        TablestoreHelper.GetRangeIterator<Session> rangeIterator = new TablestoreHelper.GetRangeIterator<>(
            client,
            sessionSecondaryIndexName,
            TablestoreHelper::rowToSession,
            start,
            end,
            metadataFilter,
            Order.DESC,
            (long) pageSize,
            batchSize,
            null
        );
        List<Session> sessions = CollectionUtil.toList(rangeIterator);
        PrimaryKey nextStartPrimaryKey = rangeIterator.nextStartPrimaryKey();
        String token = nextStartPrimaryKey == null ? null : TablestoreHelper.encodeNextPrimaryKeyToken(nextStartPrimaryKey);
        return new Response<>(sessions, token);
    }