federer
Version:
Experiments in asynchronous federated learning and decentralized learning
45 lines • 2.33 kB
TypeScript
import * as nano from "nanoevents";
import * as io from "socket.io";
import { ClientStartOptions, ServerStartOptions, ChildToParentIPCMessages, ClientToCoordinatorIPCMessages, CoordinatorToClientIPCMessages, CoordinatorToServerIPCMessages, ParentToChildIPCMessages, ServerToCoordinatorIPCMessages } from "../../common";
interface ProcessEvents {
ready: () => void;
started: () => void;
stopped: () => void;
exited: (reason: string) => void;
}
export declare type ServerIPCServer = io.Server<ServerToCoordinatorIPCMessages, CoordinatorToServerIPCMessages>;
export declare type ClientIPCServer = io.Server<ClientToCoordinatorIPCMessages, CoordinatorToClientIPCMessages>;
export declare type IPCSocket<StartOptions> = io.Socket<ChildToParentIPCMessages, ParentToChildIPCMessages<StartOptions>>;
export declare type ServerIPCSocket = io.Socket<ServerToCoordinatorIPCMessages, CoordinatorToServerIPCMessages>;
export declare type ClientIPCSocket = io.Socket<ClientToCoordinatorIPCMessages, CoordinatorToClientIPCMessages>;
export declare type ChildProcess = ServerProcess | ClientProcess;
export declare type ServerProcess = Process<ServerStartOptions, ServerIPCSocket>;
export declare type ClientProcess = Process<ClientStartOptions, ClientIPCSocket>;
/**
* A `Process` represents a process that is managed by the coordinator. This
* class is used to abstract over the exact location of the process, which could
* be on the same thread, on the same machine, or remote.
*
* @typeParam StartOptions - The start options of the process
* @typeParam Socket - The type of the the socket
*/
export declare class Process<StartOptions, Socket extends IPCSocket<StartOptions>> {
readonly socket: Socket;
readonly events: nano.Emitter<ProcessEvents>;
protected resolveStarted?: () => void;
protected startedPromise: Promise<void>;
protected resolveStopped?: () => void;
protected stoppedPromise: Promise<void>;
protected readonly readyPromise: Promise<void>;
protected readonly killedPromise: Promise<void>;
constructor(socket: Socket);
ready(): Promise<void>;
start(options: StartOptions): void;
started(): Promise<void>;
stop(): void;
stopped(): Promise<void>;
kill(): void;
exited(): Promise<void>;
}
export {};
//# sourceMappingURL=Process.d.ts.map