1 | import FunctionHandleRegistry from './function-handle-registry';
|
2 | import { MessageEndpoint } from '.';
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 | export default class CommandCoordinator<Commands> {
|
9 | private endpoint;
|
10 | private handleRegistry;
|
11 | private executor;
|
12 | private nextSeq;
|
13 | private pendingCommands;
|
14 | constructor(endpoint: MessageEndpoint, handleRegistry: FunctionHandleRegistry, executor: Commands);
|
15 | sendCommand<Name extends keyof Commands>(name: Name, ...args: CommandParams<Commands[Name]>): Promise<CommandReturn<Commands[Name]>>;
|
16 | private messageReceived;
|
17 | private dispatchResponse;
|
18 | private dispatchCommand;
|
19 | private sendMessage;
|
20 | private pendingDeferred;
|
21 | private isResponse;
|
22 | private isCommand;
|
23 | }
|
24 | declare type CommandParams<T> = T extends (...params: infer Params) => any ? Params : never;
|
25 | declare type CommandReturn<T> = T extends (...params: any[]) => infer Return ? Return : never;
|
26 | export {};
|