Shutdown flipper-server, if necessary
Summary: There are some cases in which we may want to shutdown flipper-server: - If launching Flipper Desktop and not in GK - If launching Flipper Desktop and flipper-server usage is disabled via settings Reviewed By: passy Differential Revision: D37377059 fbshipit-source-id: 86c11f2726abe47df4aeaca2fd2a9285b112a565
This commit is contained in:
committed by
Facebook GitHub Bot
parent
2d4ae3961a
commit
d1561075bb
@@ -70,6 +70,15 @@ async function getKeytarModule(staticPath: string): Promise<KeytarModule> {
|
|||||||
return keytar;
|
return keytar;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function getExternalServer() {
|
||||||
|
const server = await createFlipperServer(
|
||||||
|
'localhost',
|
||||||
|
52342,
|
||||||
|
(_state: FlipperServerState) => {},
|
||||||
|
);
|
||||||
|
return server;
|
||||||
|
}
|
||||||
|
|
||||||
async function getFlipperServer(
|
async function getFlipperServer(
|
||||||
logger: Logger,
|
logger: Logger,
|
||||||
electronIpcClient: ElectronIpcClientRenderer,
|
electronIpcClient: ElectronIpcClientRenderer,
|
||||||
@@ -91,9 +100,45 @@ async function getFlipperServer(
|
|||||||
const serverUsageEnabled = gatekeepers['flipper_desktop_use_server'];
|
const serverUsageEnabled = gatekeepers['flipper_desktop_use_server'];
|
||||||
const settings = await loadSettings();
|
const settings = await loadSettings();
|
||||||
|
|
||||||
if (serverUsageEnabled && (!settings.server || settings.server.enabled)) {
|
|
||||||
const socketPath = await makeSocketPath();
|
const socketPath = await makeSocketPath();
|
||||||
if (!(await checkSocketInUse(socketPath))) {
|
const serverRunning = await checkSocketInUse(socketPath);
|
||||||
|
|
||||||
|
const getEmbeddedServer = async () => {
|
||||||
|
if (serverRunning) {
|
||||||
|
const server = await getExternalServer();
|
||||||
|
await server.exec('shutdown').catch(() => {
|
||||||
|
/** shutdown will ultimately make this request fail, ignore error. */
|
||||||
|
});
|
||||||
|
}
|
||||||
|
const server = new FlipperServerImpl(
|
||||||
|
{
|
||||||
|
environmentInfo,
|
||||||
|
env: parseEnvironmentVariables(env),
|
||||||
|
// TODO: make username parameterizable
|
||||||
|
gatekeepers: gatekeepers,
|
||||||
|
paths: {
|
||||||
|
appPath,
|
||||||
|
homePath: await electronIpcClient.send('getPath', 'home'),
|
||||||
|
execPath,
|
||||||
|
staticPath,
|
||||||
|
tempPath: await electronIpcClient.send('getPath', 'temp'),
|
||||||
|
desktopPath: await electronIpcClient.send('getPath', 'desktop'),
|
||||||
|
},
|
||||||
|
launcherSettings: await loadLauncherSettings(),
|
||||||
|
processConfig: loadProcessConfig(env),
|
||||||
|
settings,
|
||||||
|
validWebSocketOrigins:
|
||||||
|
constants.VALID_WEB_SOCKET_REQUEST_ORIGIN_PREFIXES,
|
||||||
|
},
|
||||||
|
logger,
|
||||||
|
keytar,
|
||||||
|
);
|
||||||
|
|
||||||
|
return server;
|
||||||
|
};
|
||||||
|
// Failed to start Flipper desktop: Error: flipper-server disconnected
|
||||||
|
if (serverUsageEnabled && (!settings.server || settings.server.enabled)) {
|
||||||
|
if (!serverRunning) {
|
||||||
console.info('flipper-server: not running/listening, start');
|
console.info('flipper-server: not running/listening, start');
|
||||||
|
|
||||||
const {readyForIncomingConnections} = await startServer({
|
const {readyForIncomingConnections} = await startServer({
|
||||||
@@ -122,39 +167,9 @@ async function getFlipperServer(
|
|||||||
tailServerLogs(path.join(staticPath, loggerOutputFile));
|
tailServerLogs(path.join(staticPath, loggerOutputFile));
|
||||||
}
|
}
|
||||||
|
|
||||||
const flipperServer = await createFlipperServer(
|
return getExternalServer();
|
||||||
'localhost',
|
|
||||||
52342,
|
|
||||||
(_state: FlipperServerState) => {},
|
|
||||||
);
|
|
||||||
return flipperServer;
|
|
||||||
} else {
|
|
||||||
const flipperServer = new FlipperServerImpl(
|
|
||||||
{
|
|
||||||
environmentInfo,
|
|
||||||
env: parseEnvironmentVariables(env),
|
|
||||||
// TODO: make username parameterizable
|
|
||||||
gatekeepers: gatekeepers,
|
|
||||||
paths: {
|
|
||||||
appPath,
|
|
||||||
homePath: await electronIpcClient.send('getPath', 'home'),
|
|
||||||
execPath,
|
|
||||||
staticPath,
|
|
||||||
tempPath: await electronIpcClient.send('getPath', 'temp'),
|
|
||||||
desktopPath: await electronIpcClient.send('getPath', 'desktop'),
|
|
||||||
},
|
|
||||||
launcherSettings: await loadLauncherSettings(),
|
|
||||||
processConfig: loadProcessConfig(env),
|
|
||||||
settings,
|
|
||||||
validWebSocketOrigins:
|
|
||||||
constants.VALID_WEB_SOCKET_REQUEST_ORIGIN_PREFIXES,
|
|
||||||
},
|
|
||||||
logger,
|
|
||||||
keytar,
|
|
||||||
);
|
|
||||||
|
|
||||||
return flipperServer;
|
|
||||||
}
|
}
|
||||||
|
return getEmbeddedServer();
|
||||||
}
|
}
|
||||||
|
|
||||||
async function start() {
|
async function start() {
|
||||||
|
|||||||
Reference in New Issue
Block a user