sketch out some service code
[scpubgit/Clifton.git] / lib / App / Clifton / Server.pm
diff --git a/lib/App/Clifton/Server.pm b/lib/App/Clifton/Server.pm
new file mode 100644 (file)
index 0000000..400b929
--- /dev/null
@@ -0,0 +1,35 @@
+package App::Clifton::Server;
+
+use aliased 'App::Clifton::ServiceContainer';
+use aliased 'App::Clifton::ConfigLoader';
+use Moo;
+
+extends 'App::Clifton::Service';
+
+sub BUILD {
+  my ($self, $args) = @_;
+  $args->{loop}->add($self);
+  $self->$_ for qw(services);
+}
+
+has config_file => (is => 'ro', required => 1);
+
+has config_loader => (is => 'lazy');
+
+sub _build_config_loader { ConfigLoader->new }
+
+has services => (is => 'lazy');
+
+sub _build_services {
+  shift->_new_child(ServiceContainer, {});
+}
+
+sub reload_config { shift->_do(reload_config => @_) }
+sub shutdown { shift->_do(shutdown => @_) }
+
+sub _body_for_reload_config {
+  my ($self, $args) = @_;
+  $args->{on_finished}->();
+}
+
+1;