import { log } from './logger';
import { createGameServer } from './server';

const server = await createGameServer();
const port = await server.listen();
log.info(`PintRush game server listening on :${port}`, { origins: server.config.webOrigins });

let stopping = false;
async function shutdown(signal: string) {
  if (stopping) return;
  stopping = true;
  log.info(`received ${signal}; flushing writes and closing`);
  const force = setTimeout(() => process.exit(1), 15_000);
  force.unref();
  try {
    await server.stop();
  } finally {
    process.exit(0);
  }
}
process.on('SIGINT', () => void shutdown('SIGINT'));
process.on('SIGTERM', () => void shutdown('SIGTERM'));
process.on('unhandledRejection', (err) => log.error('unhandled rejection', { err }));
