@foxglove/rosbag2
Version:
ROS 2 (Robot Operating System) bag reader and writer abstract implementation
36 lines • 1.25 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MessageIterator = void 0;
/**
* MessageIterator is a helper class to convert raw table rows into Message instances as an
* asynchronous iterator.
*/
class MessageIterator {
constructor(rowIterators, decoder) {
this.rowIterators = rowIterators;
this.decoder = decoder;
}
[Symbol.asyncIterator]() {
return this;
}
async next() {
while (this.rowIterators.length > 0) {
const front = this.rowIterators[0];
const res = await front.next();
if (res.done === true) {
this.rowIterators.shift();
continue;
}
const rawMessage = res.value;
const { topic, timestamp, data } = rawMessage;
if (this.decoder == undefined) {
return { value: { topic, timestamp, data, value: undefined }, done: false };
}
const value = { topic, timestamp, data, value: this.decoder(rawMessage) };
return { value, done: false };
}
return { value: undefined, done: true };
}
}
exports.MessageIterator = MessageIterator;
//# sourceMappingURL=MessageIterator.js.map