public Iterator listRecentSessions()

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


    public Iterator<Session> listRecentSessions(
        String userId,
        Filter metadataFilter,
        Long inclusiveStartUpdateTime,
        Long inclusiveEndUpdateTime,
        Long maxCount,
        Integer batchSize
    ) {
        log.info(
            "list recent sessions, userId:{}, metadataFilter:{}, inclusiveStartUpdateTime:{}, inclusiveEndUpdateTime:{}, maxCount:{}, batchSize:{}",
            userId,
            metadataFilter,
            inclusiveStartUpdateTime,
            inclusiveEndUpdateTime,
            maxCount,
            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();

        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();
        return new TablestoreHelper.GetRangeIterator<>(
            client,
            sessionSecondaryIndexName,
            TablestoreHelper::rowToSession,
            start,
            end,
            metadataFilter,
            Order.DESC,
            maxCount,
            batchSize,
            null
        );
    }