UNPKG

federer

Version:

Experiments in asynchronous federated learning and decentralized learning

45 lines 2.33 kB
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