openreplay/frontend/app/player/ios/Parser.ts
2021-11-15 11:18:24 +01:00

35 lines
No EOL
618 B
TypeScript

import readMessage from '../MessageDistributor/messages';
import PrimitiveReader from '../MessageDistributor/PrimitiveReader';
export default class Parser {
private reader: PrimitiveReader
private error: boolean = false
constructor(byteArray) {
this.reader = new PrimitiveReader(byteArray)
}
parseEach(cb) {
while (this.hasNext()) {
const msg = this.next();
if (msg !== null) {
cb(msg);
}
}
}
hasNext() {
return !this.error && this.reader.hasNext();
}
next() {
try {
return readMessage(this.reader)
} catch(e) {
console.warn(e)
this.error = true
return null
}
}
}