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';
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 });
$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;