Options
All
  • Public
  • Public/Protected
  • All
Menu

Class RpcChannel<EventTypes, Context>

A wrapper class for functions to perform remote procedure calls.

Type parameters

  • EventTypes: EventEmitter.ValidEventTypes

  • Context: any

Hierarchy

  • EventEmitter
    • RpcChannel

Implements

Index

Type aliases

Static ArgumentMap

ArgumentMap<T>: {}

Type parameters

  • T: object

Type declaration

Static EventArgs

EventArgs<T, K>: Parameters<EventListener<T, K>>

Type parameters

Static EventListener

EventListener<T, K>: T extends string | symbol ? (...args: any[]) => void : (...args: ArgumentMap<Exclude<T, string | symbol>>[Extract<K, keyof T>]) => void

Type parameters

Static EventNames

EventNames<T>: T extends string | symbol ? T : keyof T

Type parameters

Static ValidEventTypes

ValidEventTypes: string | symbol | object

object should be in either of the following forms:

interface EventTypes {
  'event-with-parameters': any[]
  'event-with-example-handler': (...args: any[]) => void
}

Constructors

constructor

  • Parameters

    • c_send: (msg: RpcMessage, xfer: Transferable[]) => void

      The function to send over whatever transport is used.

        • Parameters

          Returns void

    • Default value default_policy: boolean = AccessPolicy.ALLOW
    • Default value reg: RpcHandlerRegistry = new RpcHandlerRegistry()

      The handle registry. This can be changed later.

    • Default value _opts: RpcChannelOpts = {}

    Returns RpcChannel

Properties

Readonly _i_reg

_i_reg: RpcHandlerRegistry = new RpcHandlerRegistry()

Protected Readonly _opts

Protected _state

_state: RpcState = RpcState.INACTIVE

Optional access_controller

access_controller: AccessController = new ChainedAccessController(undefined)

Optional active_keepalive

active_keepalive: undefined | number

Optional active_timeout

active_timeout: undefined | number

Protected Readonly c_send

c_send: (msg: RpcMessage, xfer: Transferable[]) => void

The function to send over whatever transport is used.

Type declaration

    • Parameters

      Returns void

Protected Readonly default_policy

default_policy: boolean

reg

The handle registry. This can be changed later.

Static EventEmitter

EventEmitter: EventEmitterStatic

Static prefixed

prefixed: string | boolean

Accessors

call_obj

opts

state

Methods

_stateChange

addListener

  • addListener<T>(event: T, fn: EventEmitter.EventListener<EventTypes, T>, context?: Context): this
  • Type parameters

    • T: EventEmitter.EventNames<EventTypes>

    Parameters

    • event: T
    • fn: EventEmitter.EventListener<EventTypes, T>
    • Optional context: Context

    Returns this

call

  • Calls a handle and awaits the return value.

    Parameters

    Returns Promise<SerializedData>

    A promise that will return when the call is completed. This will throw an error with the message Channel closed if the channel is closed before a response is received.

can

close

  • close(send?: boolean): void

emit

  • emit<T>(event: T, ...args: EventEmitter.EventArgs<EventTypes, T>): boolean
  • Calls each of the listeners registered for a given event.

    Type parameters

    • T: EventEmitter.EventNames<EventTypes>

    Parameters

    • event: T
    • Rest ...args: EventEmitter.EventArgs<EventTypes, T>

    Returns boolean

eventNames

  • eventNames(): Array<EventEmitter.EventNames<EventTypes>>
  • Return an array listing the events for which the emitter has registered listeners.

    Returns Array<EventEmitter.EventNames<EventTypes>>

generate

  • Returns an async generator. This supports only yielding values: ATM, returned values and yielded arguments are not supported. You also must manually deallocate the generator once you're done! Yes, manual memory management. If you don't manually deallocate, the listeners on both ends will remain allocated leading to memory leaks. To deallocate, call the return or throw functions on the generator.

    Parameters

    Returns AsyncGenerator<SerializedData, void, void>

listenerCount

  • listenerCount(event: EventEmitter.EventNames<EventTypes>): number
  • Return the number of listeners listening to a given event.

    Parameters

    • event: EventEmitter.EventNames<EventTypes>

    Returns number

listeners

  • listeners<T>(event: T): Array<EventEmitter.EventListener<EventTypes, T>>
  • Return the listeners registered for a given event.

    Type parameters

    • T: EventEmitter.EventNames<EventTypes>

    Parameters

    • event: T

    Returns Array<EventEmitter.EventListener<EventTypes, T>>

off

  • off<T>(event: T, fn?: EventEmitter.EventListener<EventTypes, T>, context?: Context, once?: undefined | false | true): this
  • Type parameters

    • T: EventEmitter.EventNames<EventTypes>

    Parameters

    • event: T
    • Optional fn: EventEmitter.EventListener<EventTypes, T>
    • Optional context: Context
    • Optional once: undefined | false | true

    Returns this

on

  • on<T>(event: T, fn: EventEmitter.EventListener<EventTypes, T>, context?: Context): this
  • Add a listener for a given event.

    Type parameters

    • T: EventEmitter.EventNames<EventTypes>

    Parameters

    • event: T
    • fn: EventEmitter.EventListener<EventTypes, T>
    • Optional context: Context

    Returns this

once

  • once<T>(event: T, fn: EventEmitter.EventListener<EventTypes, T>, context?: Context): this
  • Add a one-time listener for a given event.

    Type parameters

    • T: EventEmitter.EventNames<EventTypes>

    Parameters

    • event: T
    • fn: EventEmitter.EventListener<EventTypes, T>
    • Optional context: Context

    Returns this

receive

  • Call this when a new message is recieved to process it.

    Parameters

    Returns void

register

registerAll

removeAllListeners

  • removeAllListeners(event?: EventEmitter.EventNames<EventTypes>): this
  • Remove all listeners, or those of the specified event.

    Parameters

    • Optional event: EventEmitter.EventNames<EventTypes>

    Returns this

removeListener

  • removeListener<T>(event: T, fn?: EventEmitter.EventListener<EventTypes, T>, context?: Context, once?: undefined | false | true): this
  • Remove the listeners of a given event.

    Type parameters

    • T: EventEmitter.EventNames<EventTypes>

    Parameters

    • event: T
    • Optional fn: EventEmitter.EventListener<EventTypes, T>
    • Optional context: Context
    • Optional once: undefined | false | true

    Returns this

resetKeepAlive

  • resetKeepAlive(): void

resetTimeout

  • resetTimeout(): void

send

  • Sends data to a particular handle. Because there is no await for the other side to process this, the send function should be used for pushing data only since multiple messages may be sent before the other side gets around to processing them.

    Parameters

    • to: MultistringAddress

      Address to send data to

    • Default value args: SerializableData[] = []

      Data to send

    • Optional return_addr: MultistringAddress

      The address of the return field. This is used for full transactions, such as function calls

    • Default value return_type: "promise" | "generator" = "promise"

    Returns void

sendKeepAlive

  • sendKeepAlive(): void

setAwaitFirstMsg

  • setAwaitFirstMsg(should: boolean): void

setTimeout

  • setTimeout(timeout?: undefined | number, keep_alive_interval?: undefined | number): void
  • Parameters

    • Optional timeout: undefined | number
    • Optional keep_alive_interval: undefined | number

    Returns void

start

  • start(): Promise<void>

stop

  • stop(): void

unregister

unregisterAll

Generated using TypeDoc