| line | stmt | bran | cond | sub | pod | time | code | 
| 1 |  |  |  |  |  |  | package Event::RPC::LogConnection; | 
| 2 |  |  |  |  |  |  |  | 
| 3 | 19 |  |  | 19 |  | 98 | use Carp; | 
|  | 19 |  |  |  |  | 50 |  | 
|  | 19 |  |  |  |  | 1282 |  | 
| 4 |  |  |  |  |  |  |  | 
| 5 | 19 |  |  | 19 |  | 111 | use strict; | 
|  | 19 |  |  |  |  | 59 |  | 
|  | 19 |  |  |  |  | 402 |  | 
| 6 | 19 |  |  | 19 |  | 105 | use utf8; | 
|  | 19 |  |  |  |  | 25 |  | 
|  | 19 |  |  |  |  | 117 |  | 
| 7 |  |  |  |  |  |  |  | 
| 8 | 19 |  |  | 19 |  | 12070 | use Socket; | 
|  | 19 |  |  |  |  | 72436 |  | 
|  | 19 |  |  |  |  | 20628 |  | 
| 9 |  |  |  |  |  |  |  | 
| 10 |  |  |  |  |  |  | my $LOG_CONNECTION_ID; | 
| 11 |  |  |  |  |  |  |  | 
| 12 | 34 |  |  | 34 | 0 | 383 | sub get_cid                     { shift->{cid}                          } | 
| 13 | 34 |  |  | 34 | 0 | 694 | sub get_sock                    { shift->{sock}                         } | 
| 14 | 119 |  |  | 119 | 0 | 1040 | sub get_server                  { shift->{server}                       } | 
| 15 |  |  |  |  |  |  |  | 
| 16 | 17 |  |  | 17 | 0 | 231 | sub get_watcher                 { shift->{watcher}                      } | 
| 17 | 17 |  |  | 17 | 0 | 90 | sub set_watcher                 { shift->{watcher}              = $_[1] } | 
| 18 |  |  |  |  |  |  |  | 
| 19 |  |  |  |  |  |  | sub new { | 
| 20 | 17 |  |  | 17 | 0 | 86 | my $class = shift; | 
| 21 | 17 |  |  |  |  | 80 | my ($server, $sock) = @_; | 
| 22 |  |  |  |  |  |  |  | 
| 23 | 17 |  |  |  |  | 82 | my $cid = ++$LOG_CONNECTION_ID; | 
| 24 |  |  |  |  |  |  |  | 
| 25 | 17 |  |  |  |  | 519 | my $self = bless { | 
| 26 |  |  |  |  |  |  | cid     => $cid, | 
| 27 |  |  |  |  |  |  | sock    => $sock, | 
| 28 |  |  |  |  |  |  | server  => $server, | 
| 29 |  |  |  |  |  |  | watcher => undef, | 
| 30 |  |  |  |  |  |  | }, $class; | 
| 31 |  |  |  |  |  |  |  | 
| 32 |  |  |  |  |  |  | $self->{watcher} = $server->get_loop->add_io_watcher( | 
| 33 |  |  |  |  |  |  | fh   => $sock, | 
| 34 |  |  |  |  |  |  | poll => 'r', | 
| 35 | 17 |  |  | 17 |  | 555 | cb   => sub { $self->input; 1 }, | 
|  | 17 |  |  |  |  | 859 |  | 
| 36 | 17 |  |  |  |  | 179 | desc => "log reader $cid", | 
| 37 |  |  |  |  |  |  | ); | 
| 38 |  |  |  |  |  |  |  | 
| 39 | 17 |  |  |  |  | 163 | $self->get_server->log (2, | 
| 40 |  |  |  |  |  |  | "Got new logger connection. Connection ID is $cid" | 
| 41 |  |  |  |  |  |  | ); | 
| 42 |  |  |  |  |  |  |  | 
| 43 | 17 |  |  |  |  | 192 | return $self; | 
| 44 |  |  |  |  |  |  | } | 
| 45 |  |  |  |  |  |  |  | 
| 46 |  |  |  |  |  |  | sub disconnect { | 
| 47 | 17 |  |  | 17 | 0 | 76 | my $self = shift; | 
| 48 |  |  |  |  |  |  |  | 
| 49 | 17 |  |  |  |  | 100 | my $sock = $self->get_sock; | 
| 50 | 17 | 50 |  |  |  | 125 | $self->get_server->get_logger->remove_fh($sock) | 
| 51 |  |  |  |  |  |  | if $self->get_server->get_logger; | 
| 52 | 17 |  |  |  |  | 163 | $self->get_server->get_loop->del_io_watcher($self->get_watcher); | 
| 53 | 17 |  |  |  |  | 128 | $self->set_watcher(undef); | 
| 54 | 17 |  |  |  |  | 2569 | close $sock; | 
| 55 |  |  |  |  |  |  |  | 
| 56 | 17 |  |  |  |  | 158 | $self->get_server->set_log_clients_connected ( $self->get_server->get_log_clients_connected - 1 ); | 
| 57 | 17 |  |  |  |  | 182 | delete $self->get_server->get_logging_clients->{$self->get_cid}; | 
| 58 | 17 |  |  |  |  | 109 | $self->get_server->log(2, "Log client disconnected"); | 
| 59 |  |  |  |  |  |  |  | 
| 60 | 17 |  |  |  |  | 61 | 1; | 
| 61 |  |  |  |  |  |  | } | 
| 62 |  |  |  |  |  |  |  | 
| 63 |  |  |  |  |  |  | sub input { | 
| 64 | 17 |  |  | 17 | 0 | 76 | my $self = shift; | 
| 65 |  |  |  |  |  |  |  | 
| 66 | 17 |  |  |  |  | 51 | my $buffer; | 
| 67 | 17 | 50 |  |  |  | 210 | $self->disconnect | 
| 68 |  |  |  |  |  |  | if not sysread($self->get_sock, $buffer, 4096); | 
| 69 |  |  |  |  |  |  |  | 
| 70 | 17 |  |  |  |  | 67 | 1; | 
| 71 |  |  |  |  |  |  | } | 
| 72 |  |  |  |  |  |  |  | 
| 73 |  |  |  |  |  |  | 1; | 
| 74 |  |  |  |  |  |  |  | 
| 75 |  |  |  |  |  |  | __END__ |