libtorrent 警报 - read_piece_alert

libtorrent alerts - read_piece_alert

我有一个多文件 torrent(3 个文件)。我按照 here 的解释订阅了 read_piece_alert。

std::vector<alert*> alerts;
ses.pop_alerts(&alerts);
for (alert* i : alerts) {
        switch (a->type()) {

                case read_piece_alert::alert_type:
                {
                        read_piece_alert* p = (read_piece_alert*)a;
                        if (p->ec) {
                                // read_piece failed
                                break;
                        }
                        // use p
                        break;
                }
                case file_renamed_alert::alert_type:
                {
                        // etc...
                }
        }
}

如何知道该片段属于多文件种子中的哪个文件?

例如,我的多文件 torrent 有 .AVI、.TXT 和 .JPG。是否有某种索引可以知道该片段实际属于哪个文件?

是的。您可以使用 file_storage 上的 map_block() 函数将片段索引映射到一个或多个文件索引 + 偏移量。见 documentation.