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=495a9c2cd2e3a88a6e9ceb2492af0b831ff8d0ea;hp=0000000000000000000000000000000000000000;hb=f7ea4120db80a6feb33053e6bcb0f983b71f7394;hpb=5e2b222948b50fe1bff9e0cc8285fd6e2c930d1c diff --git a/lib/Object/Remote/Role/LogForwarder.pm b/lib/Object/Remote/Role/LogForwarder.pm new file mode 100644 index 0000000..495a9c2 --- /dev/null +++ b/lib/Object/Remote/Role/LogForwarder.pm @@ -0,0 +1,36 @@ +package Object::Remote::Role::LogForwarder; + +use Moo::Role; + +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 parent_router => ( is => 'rw', );#weak_ref => 1 ); + +#adds a child router to this router and gives it +#a friendly display name +sub add_child_router { + my ($self, $description, $router) = @_; + $self->child_routers->{$description} = $router; + #weaken($self->child_routers->{$class}); + $router->parent_router($self); + return; +} + +sub remove_child_router { + my ($self, $description) = @_; + return delete $self->child_routers->{$description}; +} + +after handle_log_message => sub { + my ($self, @args) = @_; + my $parent = $self->parent_router; + + return unless defined $parent; + $parent->handle_log_message(@args); +}; + +1;