@devgrid/netron
Version:
Event bus, streams and remote object invocation.
47 lines • 1.58 kB
JavaScript
import { SmartBuffer } from '@devgrid/smartbuffer';
import { Packet } from './packet';
import { serializer } from './serializer';
import { TYPE_STREAM } from './types';
export * from './types';
export const createPacket = (id, impulse, action, data) => {
const packet = new Packet(id);
packet.setImpulse(impulse);
packet.setType(action);
packet.data = data;
return packet;
};
export const createStreamPacket = (id, streamId, streamIndex, isLast, isLive, data) => {
const packet = new Packet(id);
packet.setType(TYPE_STREAM);
packet.setStreamInfo(streamId, streamIndex, isLast, isLive);
packet.data = data;
return packet;
};
export const encodePacket = (packet) => {
const buf = new SmartBuffer(SmartBuffer.DEFAULT_CAPACITY, true);
buf.writeUInt32BE(packet.id);
buf.writeUInt8(packet.flags);
serializer.encode(packet.data, buf);
if (packet.isStreamChunk()) {
buf.writeUInt32BE(packet.streamId);
buf.writeUInt32BE(packet.streamIndex);
}
return buf.toBuffer();
};
export const decodePacket = (buf) => {
const buffer = SmartBuffer.wrap(buf);
const pkt = new Packet(buffer.readUInt32BE());
pkt.flags = buffer.readUInt8();
const result = serializer.decoder.tryDecode(buffer);
if (!result) {
throw new Error('Invalid packet');
}
pkt.data = result.value;
if (pkt.isStreamChunk()) {
pkt.streamId = buffer.readUInt32BE();
pkt.streamIndex = buffer.readUInt32BE();
}
return pkt;
};
export { Packet, serializer };
//# sourceMappingURL=index.js.map