diff options
Diffstat (limited to 'js/fbs_util.ts')
-rw-r--r-- | js/fbs_util.ts | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/js/fbs_util.ts b/js/fbs_util.ts new file mode 100644 index 000000000..fd953ac88 --- /dev/null +++ b/js/fbs_util.ts @@ -0,0 +1,26 @@ +// Copyright 2018 the Deno authors. All rights reserved. MIT license. +import { libdeno } from "./libdeno"; +import { flatbuffers } from "flatbuffers"; +import { maybeThrowError } from "./errors"; +import { deno as fbs } from "gen/msg_generated"; + +export function send( + builder: flatbuffers.Builder, + msgType: fbs.Any, + msg: flatbuffers.Offset +): null | fbs.Base { + fbs.Base.startBase(builder); + fbs.Base.addMsg(builder, msg); + fbs.Base.addMsgType(builder, msgType); + builder.finish(fbs.Base.endBase(builder)); + + const resBuf = libdeno.send(builder.asUint8Array()); + if (resBuf == null) { + return null; + } else { + const bb = new flatbuffers.ByteBuffer(new Uint8Array(resBuf!)); + const baseRes = fbs.Base.getRootAsBase(bb); + maybeThrowError(baseRes); + return baseRes; + } +} |