summaryrefslogtreecommitdiff
path: root/node_modules/capnp-ts/src/serialization/arena/arena.ts
diff options
context:
space:
mode:
authorakiyamn2023-09-24 23:22:21 +1000
committerakiyamn2023-09-24 23:22:21 +1000
commit4e87195739f2a5d9a05451b48773c8afdc680765 (patch)
tree9cba501844a4a11dcbdffc4050ed8189561c55ed /node_modules/capnp-ts/src/serialization/arena/arena.ts
downloadprice-tracker-worker-4e87195739f2a5d9a05451b48773c8afdc680765.tar.gz
price-tracker-worker-4e87195739f2a5d9a05451b48773c8afdc680765.zip
Initial commit (by create-cloudflare CLI)
Diffstat (limited to 'node_modules/capnp-ts/src/serialization/arena/arena.ts')
-rw-r--r--node_modules/capnp-ts/src/serialization/arena/arena.ts60
1 files changed, 60 insertions, 0 deletions
diff --git a/node_modules/capnp-ts/src/serialization/arena/arena.ts b/node_modules/capnp-ts/src/serialization/arena/arena.ts
new file mode 100644
index 0000000..1c88859
--- /dev/null
+++ b/node_modules/capnp-ts/src/serialization/arena/arena.ts
@@ -0,0 +1,60 @@
+/**
+ * @author jdiaz5513
+ */
+
+import initTrace from "debug";
+import { assertNever } from "../../errors";
+import { Segment } from "../segment";
+import { AnyArena } from "./any-arena";
+import { ArenaAllocationResult } from "./arena-allocation-result";
+import { ArenaKind } from "./arena-kind";
+import { MultiSegmentArena } from "./multi-segment-arena";
+import { SingleSegmentArena } from "./single-segment-arena";
+
+const trace = initTrace("capnp:arena");
+trace("load");
+
+export abstract class Arena {
+ static readonly allocate = allocate;
+ static readonly getBuffer = getBuffer;
+ static readonly getNumSegments = getNumSegments;
+}
+
+export function allocate(minSize: number, segments: Segment[], a: AnyArena): ArenaAllocationResult {
+ switch (a.kind) {
+ case ArenaKind.MULTI_SEGMENT:
+ return MultiSegmentArena.allocate(minSize, a);
+
+ case ArenaKind.SINGLE_SEGMENT:
+ return SingleSegmentArena.allocate(minSize, segments, a);
+
+ default:
+ return assertNever(a);
+ }
+}
+
+export function getBuffer(id: number, a: AnyArena): ArrayBuffer {
+ switch (a.kind) {
+ case ArenaKind.MULTI_SEGMENT:
+ return MultiSegmentArena.getBuffer(id, a);
+
+ case ArenaKind.SINGLE_SEGMENT:
+ return SingleSegmentArena.getBuffer(id, a);
+
+ default:
+ return assertNever(a);
+ }
+}
+
+export function getNumSegments(a: AnyArena): number {
+ switch (a.kind) {
+ case ArenaKind.MULTI_SEGMENT:
+ return MultiSegmentArena.getNumSegments(a);
+
+ case ArenaKind.SINGLE_SEGMENT:
+ return SingleSegmentArena.getNumSegments();
+
+ default:
+ return assertNever(a);
+ }
+}