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=5c2aecd8a4888fdac6a9069b8aebaf45d65a83b1;hp=cad257257761787e7bd952ddc3bc3dd2b1607b4b;hb=a663aea54e2f4167d60dad19083cc7a078cfd04b;hpb=5add5e29851e82862e4d8f6d67dfce559f6685ce diff --git a/lib/Object/Remote/Role/LogForwarder.pm b/lib/Object/Remote/Role/LogForwarder.pm index cad2572..5c2aecd 100644 --- a/lib/Object/Remote/Role/LogForwarder.pm +++ b/lib/Object/Remote/Role/LogForwarder.pm @@ -4,13 +4,22 @@ use Moo::Role; has enable_forward => ( is => 'rw', default => sub { 1 } ); has _forward_destination => ( is => 'rw' ); +#lookup table for package names that should not +#be forwarded across Object::Remote connections 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; our $reentrant; + + if (defined $message_info{object_remote}) { + $message_info{object_remote} = { %{$message_info{object_remote}} }; + } + + $message_info{object_remote}->{forwarded} = 1; return unless $self->enable_forward; return unless defined $destination; @@ -23,7 +32,7 @@ after _deliver_message => sub { 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 $@;