X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=scpubgit%2FObject-Remote.git;a=blobdiff_plain;f=lib%2FObject%2FRemote%2FRole%2FLogForwarder.pm;fp=lib%2FObject%2FRemote%2FRole%2FLogForwarder.pm;h=3c1ef6241c683e2cb4dc83290efef525b32f0fc0;hp=495a9c2cd2e3a88a6e9ceb2492af0b831ff8d0ea;hb=4a9fa1a5a329754549f998536e0e68f19d42d7ab;hpb=f7ea4120db80a6feb33053e6bcb0f983b71f7394 diff --git a/lib/Object/Remote/Role/LogForwarder.pm b/lib/Object/Remote/Role/LogForwarder.pm index 495a9c2..3c1ef62 100644 --- a/lib/Object/Remote/Role/LogForwarder.pm +++ b/lib/Object/Remote/Role/LogForwarder.pm @@ -1,29 +1,51 @@ package Object::Remote::Role::LogForwarder; use Moo::Role; +use Object::Remote::Logging; +use Scalar::Util qw(weaken); +use Carp qw(cluck); with 'Log::Contextual::Role::Router'; #TODO re-weaken router references when object::remote #weak reference operation is figured out -has child_routers => ( is => 'ro', required => 1, default => sub { {} } ); +has child_routers => ( is => 'ro', required => 1, default => sub { [] } ); has parent_router => ( is => 'rw', );#weak_ref => 1 ); -#adds a child router to this router and gives it -#a friendly display name +sub BUILD { } + +after BUILD => sub { + my ($self) = @_; +# my $parent = $self->parent_router; +# return unless defined $parent ; +# $parent->add_child_router($self); +}; + +sub describe { + my ($self, $depth) = @_; + $depth = -1 unless defined $depth; + $depth++; + my $buf = "\t" x $depth . $self->description . "\n"; + foreach my $child (@{$self->child_routers}) { + next unless defined $child; + $buf .= $child->describe($depth); + } + + return $buf; +} + sub add_child_router { - my ($self, $description, $router) = @_; - $self->child_routers->{$description} = $router; - #weaken($self->child_routers->{$class}); - $router->parent_router($self); + my ($self, $router) = @_; + push(@{ $self->child_routers }, $router); +# weaken(${ $self->child_routers }[-1]); return; } -sub remove_child_router { - my ($self, $description) = @_; - return delete $self->child_routers->{$description}; -} +#sub remove_child_router { +# my ($self, $description) = @_; +# return delete $self->child_routers->{$description}; +#} after handle_log_message => sub { my ($self, @args) = @_;