跳到主要内容

BrowseNext

Browse / BrowseWithPaging 返回的子节点超过服务端单页限制时, 服务端会返回非空的 continuation_point (续翻凭证). 用 BrowseNext 继续拿下一页.

前置阅读

签名

BrowsePage BrowseNext(
std::vector<uint8_t> const& continuation_point,
bool release = false);
参数说明
continuation_point上一次 Browse / BrowseNext 返回的续翻凭证
releasetrue = 放弃续翻, 服务端释放资源 (不返回 references)

BrowsePage 结构

struct BrowsePage {
std::vector<Reference> references;
std::vector<uint8_t> continuation_point; // 空 = 无更多页
};

完整翻页例子

auto page = s.BrowseWithPaging("ns=2;s=BigFolder");
std::vector<Reference> all_refs = page.references;

while (!page.continuation_point.empty()) {
page = s.BrowseNext(page.continuation_point);
all_refs.insert(all_refs.end(), page.references.begin(), page.references.end());
}

std::cout << "Total " << all_refs.size() << " children\n";

主动释放 (节省服务端资源)

服务端为每个 ContinuationPoint 维护状态, 占用资源. 如果中途不想继续翻, 调 release=true 显式释放:

s.BrowseNext(page.continuation_point, /*release=*/true);

否则服务端会在超时后 (典型 5 分钟) 自动 GC.


注意

  • continuation_point 是不透明字节数组, 不要修改 / 解析
  • 同一个 continuation_point 只能用一次
  • 服务端 continuation_point 数量上限 (通常每 Session ~10-100), 超过后旧 CP 会被踢

下一步