X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FApp%2FClifton%2FServer.pm;h=4a46499a15c614627d7e58346d7043f6523be015;hb=327a4b1a20939c6f165dc432ace73d24624047a4;hp=c1547866f8a3628a85f74fb5acaaddaf949ad943;hpb=06185cf5ccc6d8e40da2853a8783643ed278cd8f;p=scpubgit%2FClifton.git diff --git a/lib/App/Clifton/Server.pm b/lib/App/Clifton/Server.pm index c154786..4a46499 100644 --- a/lib/App/Clifton/Server.pm +++ b/lib/App/Clifton/Server.pm @@ -2,6 +2,8 @@ package App::Clifton::Server; use aliased 'App::Clifton::ConsoleService'; use aliased 'App::Clifton::ConfigLoader'; +use aliased 'App::Clifton::Tower::Jabber' => 'Jabber_Tower'; +use aliased 'App::Clifton::Tower::IRC' => 'IRC_Tower'; use Moo; extends 'App::Clifton::Service'; @@ -22,6 +24,10 @@ sub _build_config_loader { ConfigLoader->new } has console_service => (is => 'lazy'); +has jabber_towers => (is => 'ro', default => sub { {} }); + +has irc_towers => (is => 'ro', default => sub { {} }); + sub _build_console_service { my ($self) = @_; $self->_new_child(ConsoleService, { server => $self }); @@ -37,4 +43,39 @@ sub _body_for_reload_config { $args->{on_finished}->($config); } +sub start_chain { shift->_do(start_chain => @_) } + +sub _dependencies_for_start_chain { + my ($self, $args) = @_; + { + irc_tower => $self->start_irc_tower($args->{irc_tower}) + } +} + +sub _body_for_start_chain { + my ($self, $args) = @_; + $args->{irc_tower}->start_chain($args); +} + +sub start_irc_tower { shift->_do(start_irc_tower => @_) } + +sub _guard_for_start_irc_tower { + my ($self, $args) = @_; + if (my $tower = $self->irc_towers->{$args->{server}}{$args->{irc_nick}}) { + ($tower); + } else { + (); + } +} + +sub _body_for_start_irc_tower { + my ($self, $args) = @_; + $self->_new_child(IRC_Tower, { + irc_server => $args->{server}, + irc_nick => $args->{irc_nick}, + on_setup => $args->{on_finished}, + server => $self, + }); +} + 1;