Commit | Line | Data |
20038dd8 |
1 | package App::Clifton::Launcher; |
2 | |
3 | use IO::Async::Loop; |
4 | use Log::Contextual qw(set_logger :log); |
5 | use Log::Contextual::SimpleLogger; |
6 | use aliased 'App::Clifton::Server'; |
7 | use Moo; |
8 | |
9 | has config_file => (is => 'ro', required => 1); |
10 | |
11 | sub run { |
12 | my ($self) = @_; |
13 | set_logger(Log::Contextual::SimpleLogger->new({ levels => [ qw( |
21a18863 |
14 | info warn debug error |
20038dd8 |
15 | ) ] })); |
16 | my $loop = IO::Async::Loop->new; |
17 | my $server = Server->new( |
18 | config_file => $self->config_file, |
19 | loop => $loop, |
20 | ); |
21 | $loop->later(sub { |
22 | $server->reload_config->on_finished(sub { |
23 | log_info { "Server startup complete" }; |
24 | }); |
25 | }); |
21a18863 |
26 | while (1) { |
27 | local $@; |
28 | last if eval { $loop->loop_forever; 1 }; |
29 | my $error = $@; |
30 | log_error { "Server exception: ${error}" }; |
31 | } |
32 | log_info { "Server shut down cleanly" }; |
20038dd8 |
33 | } |
34 | |
35 | 1; |