fix(gateway): prevent reconnect race and hide windows subprocess consoles
Co-authored-by: Haze <hazeone@users.noreply.github.com>
This commit is contained in:
27
electron/gateway/process-policy.ts
Normal file
27
electron/gateway/process-policy.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
export function shouldHideConsoleWindow(platform: NodeJS.Platform = process.platform): boolean {
|
||||
return platform === 'win32';
|
||||
}
|
||||
|
||||
export function nextLifecycleEpoch(currentEpoch: number): number {
|
||||
return currentEpoch + 1;
|
||||
}
|
||||
|
||||
export function isLifecycleSuperseded(expectedEpoch: number, currentEpoch: number): boolean {
|
||||
return expectedEpoch !== currentEpoch;
|
||||
}
|
||||
|
||||
export interface ReconnectAttemptContext {
|
||||
scheduledEpoch: number;
|
||||
currentEpoch: number;
|
||||
shouldReconnect: boolean;
|
||||
}
|
||||
|
||||
export function getReconnectSkipReason(context: ReconnectAttemptContext): string | null {
|
||||
if (!context.shouldReconnect) {
|
||||
return 'auto-reconnect disabled';
|
||||
}
|
||||
if (isLifecycleSuperseded(context.scheduledEpoch, context.currentEpoch)) {
|
||||
return `stale reconnect callback (scheduledEpoch=${context.scheduledEpoch}, currentEpoch=${context.currentEpoch})`;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
Reference in New Issue
Block a user