UNPKG

763 BJavaScriptView Raw
1// read-core.js
2
3exports.decode = decode;
4exports.decodeAsync = decodeAsync;
5
6var uint8 = require("./read-format").format.uint8;
7var token = require("./read-token").token;
8var BUFFER_SHORTAGE = require("./common").BUFFER_SHORTAGE;
9
10function decode(decoder) {
11 var type = uint8(decoder);
12 var func = token[type];
13 if (!func) throw new Error("Invalid type: " + (type ? ("0x" + type.toString(16)) : type));
14 return func(decoder);
15}
16
17function decodeAsync(decoder) {
18 while (decoder.offset < decoder.buffer.length) {
19 var start = decoder.offset;
20 var value;
21 try {
22 value = decode(decoder);
23 } catch (e) {
24 if (e !== BUFFER_SHORTAGE) throw e;
25 // rollback
26 decoder.offset = start;
27 break;
28 }
29 decoder.push(value);
30 }
31}