UNPKG

@jsonjoy.com/reactive-rpc

Version:

Reactive-RPC is a library for building reactive APIs over WebSocket, HTTP, and other RPCs.

54 lines 1.86 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BinaryRpcMessageCodec = void 0; const constants_1 = require("../constants"); const decode_1 = require("./decode"); class BinaryRpcMessageCodec { constructor() { this.id = 'rx.binary'; this.format = constants_1.RpcMessageFormat.Compact; } encodeMessage(jsonCodec, message) { message.encodeBinary(jsonCodec); } encodeBatch(jsonCodec, batch) { const length = batch.length; for (let i = 0; i < length; i++) batch[i].encodeBinary(jsonCodec); } decodeBatch(jsonCodec, uint8) { const decoder = jsonCodec.decoder; const reader = decoder.reader; reader.reset(uint8); const size = uint8.length; const messages = []; while (reader.x < size) { const message = (0, decode_1.decode)(reader); messages.push(message); } const length = messages.length; for (let i = 0; i < length; i++) { const message = messages[i]; const value = message.value; if (value) { const cut = value.data; const arr = cut.uint8.subarray(cut.start, cut.start + cut.size); const data = arr.length ? decoder.read(arr) : undefined; if (data === undefined) message.value = undefined; else value.data = data; } } return messages; } encode(jsonCodec, batch) { const encoder = jsonCodec.encoder; const writer = encoder.writer; writer.reset(); this.encodeBatch(jsonCodec, batch); return writer.flush(); } } exports.BinaryRpcMessageCodec = BinaryRpcMessageCodec; //# sourceMappingURL=BinaryRpcMessageCodec.js.map