/usr/share/perl5/Event/RPC/LogConnection.pm is in libevent-rpc-perl 1.08-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | package Event::RPC::LogConnection;
use Carp;
use strict;
use utf8;
use Socket;
my $LOG_CONNECTION_ID;
sub get_cid { shift->{cid} }
sub get_sock { shift->{sock} }
sub get_server { shift->{server} }
sub get_watcher { shift->{watcher} }
sub set_watcher { shift->{watcher} = $_[1] }
sub new {
my $class = shift;
my ($server, $sock) = @_;
my $cid = ++$LOG_CONNECTION_ID;
my $self = bless {
cid => $cid,
sock => $sock,
server => $server,
watcher => undef,
}, $class;
$self->{watcher} = $server->get_loop->add_io_watcher(
fh => $sock,
poll => 'r',
cb => sub { $self->input; 1 },
desc => "log reader $cid",
);
$self->get_server->log (2,
"Got new logger connection. Connection ID is $cid"
);
return $self;
}
sub disconnect {
my $self = shift;
my $sock = $self->get_sock;
$self->get_server->get_logger->remove_fh($sock)
if $self->get_server->get_logger;
$self->get_server->get_loop->del_io_watcher($self->get_watcher);
$self->set_watcher(undef);
close $sock;
$self->get_server->set_log_clients_connected ( $self->get_server->get_log_clients_connected - 1 );
delete $self->get_server->get_logging_clients->{$self->get_cid};
$self->get_server->log(2, "Log client disconnected");
1;
}
sub input {
my $self = shift;
my $buffer;
$self->disconnect
if not sysread($self->get_sock, $buffer, 4096);
1;
}
1;
__END__
=encoding utf8
=head1 NAME
Event::RPC::LogConnection - Represents a logging connection
=head1 SYNOPSIS
# Internal module. No documented public interface.
=head1 DESCRIPTION
Objects of this class are created by Event::RPC server if a
client connects to the logging port of the server. It's an
internal module and has no public interface.
=head1 AUTHORS
Jörn Reder <joern AT zyn.de>
=head1 COPYRIGHT AND LICENSE
Copyright (C) 2005-2015 by Jörn Reder <joern AT zyn.de>.
This library is free software; you can redistribute it
and/or modify it under the same terms as Perl itself.
=cut
|