federer
Version:
Experiments in asynchronous federated learning and decentralized learning
39 lines • 1.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const assert = require("assert");
const io = tslib_1.__importStar(require("socket.io-client"));
const common_1 = require("../common");
const cli_1 = require("./cli");
const Client_1 = require("./Client");
let client;
const args = cli_1.getCLIArgs();
let logger;
const coordinator = io.io(args["coordinator-url"]);
coordinator.on("start", (options) => {
assert(client === undefined);
logger = common_1.createLogger(options.loggerOptions, `Client ${options.id}`, `client-${options.id}.log`);
logger.debug(`Received start options: ${JSON.stringify(options, null, " ")}`);
void Client_1.Client.create(args["server-url"], options, logger).then((newClient) => {
client = newClient;
coordinator.emit("started");
});
});
coordinator.on("stop", () => {
assert(client !== undefined);
logger?.debug("Received stop message");
void client.terminate().then(() => {
client = undefined;
coordinator.emit("stopped");
});
});
coordinator.once("kill", () => {
logger?.debug("Received kill message");
coordinator.emit("killed", "received kill");
process.exit(0);
});
coordinator.on("disconnect", (reason) => {
logger?.warn(`Disconnected from coordinator for reason: '${reason}'`);
});
coordinator.emit("ready");
//# sourceMappingURL=index.js.map