App-Pocosi
view release on metacpan or search on metacpan
lib/App/Pocosi/Status.pm view on Meta::CPAN
}
sub PCSI_unregister {
return 1;
}
sub verbose {
my ($self, $value) = @_;
$self->{Verbose} = $value;
return;
}
sub trace {
my ($self, $value) = @_;
$self->{Trace} = $value;
return;
}
sub _normalize {
my ($line) = @_;
$line = decode_irc($line);
$line = strip_color($line);
$line = strip_formatting($line);
return $line;
}
sub _dump {
my ($arg) = @_;
if (ref $arg eq 'ARRAY') {
my @elems;
for my $elem (@$arg) {
push @elems, _dump($elem);
}
return '['. join(', ', @elems) .']';
}
elsif (ref $arg eq 'HASH') {
my @pairs;
for my $key (keys %$arg) {
push @pairs, [$key, _dump($arg->{$key})];
}
return '{'. join(', ', map { "$_->[0] => $_->[1]" } @pairs) .'}';
}
elsif (ref $arg) {
require overload;
return overload::StrVal($arg);
}
elsif (defined $arg) {
return $arg if looks_like_number($arg);
return "'".decode_irc($arg)."'";
}
else {
return 'undef';
}
}
sub _event_debug {
my ($self, $ircd, $args, $event) = @_;
if (!defined $event) {
$event = (caller(1))[3];
$event =~ s/.*:://;
}
pop @$args;
my @output;
for my $i (0..$#{ $args }) {
push @output, "ARG$i: " . _dump(${ $args->[$i] });
}
$ircd->send_event_next(
'ircd_plugin_status',
$self,
'debug',
"$event: ".join(', ', @output),
);
return;
}
sub IRCD_connected {
my ($self, $ircd) = splice @_, 0, 2;
my $addr = ${ $_[1] };
my $port = ${ $_[2] };
my $peer = ${ $_[5] };
my $msg = "Connected to peer $peer on $addr:$port";
$self->_event_debug($ircd, \@_) if $self->{Trace};
$ircd->send_event_next('ircd_plugin_status', $self, 'normal', $msg);
return PCSI_EAT_NONE;
}
sub IRCD_socketerr {
my ($self, $ircd) = splice @_, 0, 2;
my $args = ${ $_[0] };
my $op = ${ $_[1] };
my $error = ${ $_[3] };
my $addr = $args->{remoteaddress};
my $port = $args->{remoteport};
my $peer = $args->{name};
my $msg = "Failed to connect to peer $peer on $addr:$port. Operation $op failed: $error";
$self->_event_debug($ircd, \@_) if $self->{Trace};
$ircd->send_event_next('ircd_plugin_status', $self, 'normal', $msg);
return PCSI_EAT_NONE;
}
sub IRCD_listener_add {
my ($self, $ircd) = splice @_, 0, 2;
my $port = ${ $_[0] };
my $addr = ${ $_[2] };
my $msg = "Started listening on $addr:$port";
$self->_event_debug($ircd, \@_) if $self->{Trace};
$ircd->send_event_next('ircd_plugin_status', $self, 'normal', $msg);
return PCSI_EAT_NONE;
}
sub IRCD_listener_del {
my ($self, $ircd) = splice @_, 0, 2;
my $port = ${ $_[0] };
my $addr = ${ $_[2] };
( run in 1.758 second using v1.01-cache-2.11-cpan-4ab04211f4c )