Skip to content
3 min read · 594 words

Class: HostEndpoint

Defined in: src/batteries/isolation/protocol.ts:143

Host-side correlation engine over a PortLike. Queues calls/stream-starts made before ready and flushes them in order once it arrives; tracks in-flight calls (one-shot, resolved/rejected by a result envelope) and open streams (persistent, fed by stream:delta/stream:end/stream:error until closed). terminate() rejects every in-flight call and errors every open stream with a caller-supplied reason (the message text host.ts uses is E_ISOLATED_TERMINATED's message).

Constructors

Constructor

ts
new HostEndpoint(
   port: PortLike,
   hooks?: HostEndpointHooks,
   hostcalls?: {
  handlers?: ReadonlyMap<string, HostcallHandler>;
  maxHostcallBytes?: number;
  quotas?: HostcallQuotas;
}): HostEndpoint;

Defined in: src/batteries/isolation/protocol.ts:158

Parameters

ParameterType
portPortLike
hooksHostEndpointHooks
hostcalls{ handlers?: ReadonlyMap<string, HostcallHandler>; maxHostcallBytes?: number; quotas?: HostcallQuotas; }
hostcalls.handlers?ReadonlyMap<string, HostcallHandler>
hostcalls.maxHostcallBytes?number
hostcalls.quotas?HostcallQuotas

Returns

HostEndpoint

Accessors

isReady

Get Signature

ts
get isReady(): boolean;

Defined in: src/batteries/isolation/protocol.ts:176

Whether the guest has signaled ready yet.

Returns

boolean


openStreamCount

Get Signature

ts
get openStreamCount(): number;

Defined in: src/batteries/isolation/protocol.ts:188

Number of streams currently open (started, not yet ended/errored). Used by host.ts alongside pendingCallCount to report an accurate inFlight count on a crash.

Returns

number


pendingCallCount

Get Signature

ts
get pendingCallCount(): number;

Defined in: src/batteries/isolation/protocol.ts:182

Number of calls currently awaiting a result envelope. Used by host.ts to report an accurate inFlight count on a crash before terminate() clears the pending map.

Returns

number

Methods

abort()

ts
abort(id: string): void;

Defined in: src/batteries/isolation/protocol.ts:351

Send an abort envelope for an in-flight call's id. Does not itself reject the call — the guest is expected to respond with a result (ok:false) once it observes the abort.

Parameters

ParameterType
idstring

Returns

void


call()

ts
call(method: string, args: WireValue[]): {
  id: string;
  promise: Promise<WireValue>;
};

Defined in: src/batteries/isolation/protocol.ts:261

Issue a request/response call. Resolves with the guest's returned WireValue, rejects with a reconstructed Error (see wireErrorToError) on failure or on terminate().

Parameters

ParameterType
methodstring
argsWireValue[]

Returns

ts
{
  id: string;
  promise: Promise<WireValue>;
}
NameTypeDefined in
idstringsrc/batteries/isolation/protocol.ts:261
promisePromise<WireValue>src/batteries/isolation/protocol.ts:261

cancelStream()

ts
cancelStream(id: string, reason?: WireValue): void;

Defined in: src/batteries/isolation/protocol.ts:368

Send a stream:cancel envelope and stop tracking the stream locally.

Parameters

ParameterType
idstring
reason?WireValue

Returns

void


hostresult()

ts
hostresult(id: string, result:
  | {
  ok: true;
  value: string | WireValue;
}
  | {
  error?: WireError;
  ok: false;
  value?: string;
}): void;

Defined in: src/batteries/isolation/protocol.ts:339

Post a guest capability result. Unknown/late ids are harmlessly ignored by the guest.

Parameters

ParameterType
idstring
result| { ok: true; value: string | WireValue; } | { error?: WireError; ok: false; value?: string; }

Returns

void


shutdown()

ts
shutdown(): void;

Defined in: src/batteries/isolation/protocol.ts:374

Send a shutdown envelope (graceful-exit request; does not itself tear down the port).

Returns

void


startStream()

ts
startStream(
   stream: string,
   args: WireValue[],
   sink: StreamSink): string;

Defined in: src/batteries/isolation/protocol.ts:360

Start a fire-and-forward stream. Returns the correlation id immediately (before the guest necessarily even exists, if not yet ready) and a sink the caller wires to a ReadableStream controller.

Parameters

ParameterType
streamstring
argsWireValue[]
sinkStreamSink

Returns

string


terminate()

ts
terminate(reason: string): void;

Defined in: src/batteries/isolation/protocol.ts:382

Reject every in-flight call and error every open stream with reason, clear all queued-but-unsent envelopes, and unsubscribe from the port. Idempotent.

Parameters

ParameterType
reasonstring

Returns

void