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;h=ce5bbc28133749165342b83e24567c89511d0162;hp=4bf2ecc203b54738f2423308350d71eb44506cc2;hb=55c0d0209fa9d9265ff178f54ae9fe5fdddef3c1;hpb=08435f11e57bbd6e01f4e52382f58b22f71358ad diff --git a/lib/Object/Remote/Role/LogForwarder.pm b/lib/Object/Remote/Role/LogForwarder.pm index 4bf2ecc..ce5bbc2 100644 --- a/lib/Object/Remote/Role/LogForwarder.pm +++ b/lib/Object/Remote/Role/LogForwarder.pm @@ -9,17 +9,17 @@ has _forward_destination => ( is => 'rw' ); has _forward_stop => ( is => 'ro', required => 1, default => sub { {} } ); after _deliver_message => sub { - my ($self, $level, $generator, $args, $metadata) = @_; - my $package = $metadata->{package}; +# my ($self, $level, $generator, $args, $metadata) = @_; + my ($self, %message_info) = @_; + my $package = $message_info{caller_package}; my $destination = $self->_forward_destination; - my %metadata = %$metadata; our $reentrant; - - if (defined $metadata->{object_remote}) { - $metadata{object_remote} = { %{$metadata->{object_remote}} }; + + if (defined $message_info{object_remote}) { + $message_info{object_remote} = { %{$message_info{object_remote}} }; } - - $metadata{object_remote}->{forwarded} = 1; + + $message_info{object_remote}->{forwarded} = 1; return unless $self->enable_forward; return unless defined $destination; @@ -29,11 +29,11 @@ after _deliver_message => sub { warn "log forwarding went reentrant. bottom: '$reentrant' top: '$package'"; return; } - + local $reentrant = $package; - - eval { $destination->_deliver_message($level, $generator, $args, \%metadata) }; - + + eval { $destination->_deliver_message(%message_info) }; + if ($@ && $@ !~ /^Attempt to use Object::Remote::Proxy backed by an invalid handle/) { die $@; }