UNPKG

@darlean/core

Version:

Darlean core functionality for creating applications that define, expose and host actors

42 lines (41 loc) 2.56 kB
/// <reference types="node" /> import { IActionError, IActorCallRequest, IActorCallResponse, IInvokeOptions, IInvokeResult, IMultiTypeInstanceContainer, IRemote } from '@darlean/base'; import { ITransport, ITransportFailure, ITransportSession } from './infra/transport'; import { IRemoteCallTags, ITransportTags } from './infra/wiretypes'; export type ITransportActorCallRequest = IActorCallRequest; export type ITransportActorCallResponse = IActorCallResponse; export declare const TRANSPORT_ERROR_TRANSPORT_ERROR = "TRANSPORT_ERROR"; export declare const TRANSPORT_ERROR_TRANSPORT_CALL_TIMEOUT = "TRANSPORT_CALL_TIMEOUT"; export declare const TRANSPORT_ERROR_TRANSPORT_CALL_INTERRUPTED = "TRANSPORT_CALL_INTERRUPTED"; export declare const TRANSPORT_ERROR_PARAMETER_MESSAGE = "Message"; interface IRemotePendingCall { resolve: (value: IInvokeResult) => void; reject: (error: unknown) => void; timeout: NodeJS.Timeout; options?: IInvokeOptions; } export declare class TransportRemote implements IRemote { protected transport: ITransport; protected session?: ITransportSession; protected appId: string; protected pendingCalls: Map<string, IRemotePendingCall>; protected instanceContainer: IMultiTypeInstanceContainer; /** * Creates a new TransportRemote. * @param appId The id of the current application with which the remote makes itself known to the transport * @param transport The transport mechanism used to send/receive messages * @param container The multi-type instance container that this remote can dispatch incoming action requests to */ constructor(appId: string, transport: ITransport, container: IMultiTypeInstanceContainer); init(): Promise<void>; finalize(): Promise<void>; invoke(options: IInvokeOptions): Promise<IInvokeResult>; protected invokeImpl(options: IInvokeOptions): Promise<IInvokeResult>; protected toTransportRequest(content: IActorCallRequest): ITransportActorCallRequest; protected fromTransportRequest(content: ITransportActorCallRequest): IActorCallRequest; protected toTransportResponse(content: IActorCallResponse): ITransportActorCallResponse; protected errorToTransportError(error: IActionError): IActionError; protected fromTransportResponse(content: ITransportActorCallResponse): IActorCallResponse; protected handleMessage(tags: ITransportTags & IRemoteCallTags & (ITransportFailure | ITransportActorCallResponse | ITransportActorCallRequest | never)): void; } export {};