1 package App::Clifton::Server;
3 use aliased 'App::Clifton::ConsoleService';
4 use aliased 'App::Clifton::ConfigLoader';
7 extends 'App::Clifton::Service';
10 my ($self, $args) = @_;
11 $args->{loop}->add($self);
12 $self->$_ for qw(console_service);
15 has config_file => (is => 'ro', required => 1);
17 has config_loader => (is => 'lazy');
19 has current_config => (is => 'rw');
21 sub _build_config_loader { ConfigLoader->new }
23 has console_service => (is => 'lazy');
25 sub _build_console_service {
27 $self->_new_child(ConsoleService, { server => $self });
30 sub reload_config { shift->_do(reload_config => @_) }
31 sub shutdown { shift->_do(shutdown => @_) }
33 sub _body_for_reload_config {
34 my ($self, $args) = @_;
35 my $config = $self->config_loader->config_from_file($self->config_file);
36 $self->current_config($config);
37 $args->{on_finished}->($config);