def main( name: str, daemon_class: Type[OSPDaemon], parser: Optional[ParserType] = None, ): """ OSPD Main function. """ if not parser: parser = create_parser(name) args = parser.parse_arguments() if args.version: args.foreground = True init_logging(name, args.log_level, log_file=args.log_file, foreground=args.foreground) if args.port == 0: server = UnixSocketServer( args.unix_socket, args.socket_mode, args.stream_timeout, ) else: server = TlsServer( args.address, args.port, args.cert_file, args.key_file, args.ca_file, args.stream_timeout, ) daemon = daemon_class(**vars(args)) if args.version: print_version(daemon) sys.exit() if not args.foreground: go_to_background() if not create_pid(args.pid_file): sys.exit() # Set signal handler and cleanup atexit.register(remove_pidfile, pidfile=args.pid_file) signal.signal(signal.SIGTERM, partial(remove_pidfile, args.pid_file)) daemon.init() if not daemon.check(): return 1 daemon.run(server) return 0
def main( name: str, daemon_class: Type[OSPDaemon], parser: Optional[ParserType] = None, ): """ OSPD Main function. """ if not parser: parser = create_parser(name) args = parser.parse_arguments() if args.version: args.foreground = True init_logging( args.log_level, log_file=args.log_file, log_config=args.log_config, foreground=args.foreground, ) if args.port == 0: server = UnixSocketServer( args.unix_socket, args.socket_mode, args.stream_timeout, ) else: server = TlsServer( args.address, args.port, args.cert_file, args.key_file, args.ca_file, args.stream_timeout, ) daemon = daemon_class(**vars(args)) if args.version: print_version(daemon) sys.exit() if args.list_commands: print(daemon.get_help_text()) sys.exit() if not args.foreground: go_to_background() if not create_pid(args.pid_file): sys.exit() # Set signal handler and cleanup atexit.register(exit_cleanup, pidfile=args.pid_file, server=server, daemon=daemon) signal.signal(signal.SIGTERM, partial(exit_cleanup, args.pid_file, server, daemon)) signal.signal(signal.SIGINT, partial(exit_cleanup, args.pid_file, server, daemon)) if not daemon.check(): return 1 LOGGER.info( "Starting %s version %s.", daemon.daemon_info['name'], daemon.daemon_info['version'], ) daemon.init(server) daemon.run() return 0