Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • perl/modules/IRC/lib/BarnOwl/Module/IRC/Connection.pm

    reab7a4c r5ff830a  
    1010=head1 DESCRIPTION
    1111
    12 This module is a Net::IRC::Connection subclass for BarnOwl's IRC
     12This module is a wrapper around Net::IRC::Connection for BarnOwl's IRC
    1313support
    1414
    1515=cut
    1616
    17 use base qw(Net::IRC::Connection Class::Accessor Exporter);
    18 __PACKAGE__->mk_accessors(qw(alias channels owl_connected owl_motd));
     17use Net::IRC::Connection;
     18
     19use base qw(Class::Accessor Exporter);
     20__PACKAGE__->mk_accessors(qw(conn alias channels connected motd));
    1921our @EXPORT_OK = qw(&is_private);
    2022
    2123use BarnOwl;
     24
     25BEGIN {
     26    no strict 'refs';
     27    my @delegate = qw(nick server);
     28    for my $meth (@delegate) {
     29        *{"BarnOwl::Module::IRC::Connection::$meth"} = sub {
     30            shift->conn->$meth(@_);
     31        }
     32    }
     33};
    2234
    2335sub new {
     
    2638    my $alias = shift;
    2739    my %args = (@_);
    28     my $self = $class->SUPER::new($irc, %args);
     40    my $conn = Net::IRC::Connection->new($irc, %args);
     41    my $self = bless({}, $class);
     42    $self->conn($conn);
    2943    $self->alias($alias);
    3044    $self->channels([]);
    31     $self->owl_motd("");
    32     $self->owl_connected(0);
    33     bless($self, $class);
    34 
    35     $self->add_default_handler(sub { goto &on_event; });
    36     $self->add_handler(['msg', 'notice', 'public', 'caction'],
    37             sub { goto &on_msg });
    38     $self->add_handler(['welcome', 'yourhost', 'created',
    39             'luserclient', 'luserop', 'luserchannels', 'luserme'],
    40             sub { goto &on_admin_msg });
    41     $self->add_handler(['myinfo', 'map', 'n_local', 'n_global',
     45    $self->motd("");
     46    $self->connected(0);
     47
     48    $self->conn->add_handler(376 => sub { shift; $self->on_connect(@_) });
     49    $self->conn->add_default_handler(sub { shift; $self->on_event(@_) });
     50    $self->conn->add_handler(['msg', 'notice', 'public', 'caction'],
     51            sub { shift; $self->on_msg(@_) });
     52    $self->conn->add_handler(['welcome', 'yourhost', 'created',
     53            'luserclient', 'luserop', 'luserchannels', 'luserme',
     54            'notice', 'error'],
     55            sub { shift; $self->on_admin_msg(@_) });
     56    $self->conn->add_handler(['myinfo', 'map', 'n_local', 'n_global',
    4257            'luserconns'],
    4358            sub { });
    44     $self->add_handler(motdstart => sub { goto &on_motdstart });
    45     $self->add_handler(motd      => sub { goto &on_motd });
    46     $self->add_handler(endofmotd => sub { goto &on_endofmotd });
    47     $self->add_handler(join      => sub { goto &on_join });
    48     $self->add_handler(part      => sub { goto &on_part });
    49     $self->add_handler(disconnect => sub { goto &on_disconnect });
    50     $self->add_handler(nicknameinuse => sub { goto &on_nickinuse });
    51     $self->add_handler(cping     => sub { goto &on_ping });
     59    $self->conn->add_handler(motdstart => sub { shift; $self->on_motdstart(@_) });
     60    $self->conn->add_handler(motd      => sub { shift; $self->on_motd(@_) });
     61    $self->conn->add_handler(endofmotd => sub { shift; $self->on_endofmotd(@_) });
     62    $self->conn->add_handler(join      => sub { shift; $self->on_join(@_) });
     63    $self->conn->add_handler(part      => sub { shift; $self->on_part(@_) });
     64    $self->conn->add_handler(disconnect => sub { shift; $self->on_disconnect(@_) });
     65    $self->conn->add_handler(nicknameinuse => sub { shift; $self->on_nickinuse(@_) });
     66    $self->conn->add_handler(cping     => sub { shift; $self->on_ping(@_) });
    5267
    5368    return $self;
     
    97112sub on_ping {
    98113    my ($self, $evt) = @_;
    99     $self->ctcp_reply($evt->nick, join (' ', ($evt->args)));
     114    $self->conn->ctcp_reply($evt->nick, join (' ', ($evt->args)));
    100115}
    101116
     
    110125sub on_motdstart {
    111126    my ($self, $evt) = @_;
    112     $self->owl_motd(join "\n", cdr $evt->args);
     127    $self->motd(join "\n", cdr $evt->args);
    113128}
    114129
    115130sub on_motd {
    116131    my ($self, $evt) = @_;
    117     $self->owl_motd(join "\n", $self->owl_motd, cdr $evt->args);
     132    $self->motd(join "\n", $self->motd, cdr $evt->args);
    118133}
    119134
    120135sub on_endofmotd {
    121136    my ($self, $evt) = @_;
    122     $self->owl_motd(join "\n", $self->owl_motd, cdr $evt->args);
    123     if(!$self->owl_connected) {
     137    $self->motd(join "\n", $self->motd, cdr $evt->args);
     138    if(!$self->connected) {
    124139        BarnOwl::admin_message("IRC", "Connected to " .
    125140                               $self->server . " (" . $self->alias . ")");
    126         $self->owl_connected(1);
     141        $self->connected(1);
    127142       
    128143    }
    129144    BarnOwl::admin_message("IRC",
    130145            BarnOwl::Style::boldify('MOTD for ' . $self->alias) . "\n"
    131             . strip_irc_formatting($self->owl_motd));
     146            . strip_irc_formatting($self->motd));
    132147}
    133148
     
    163178                           "[" . $self->alias . "] " .
    164179                           [$evt->args]->[1] . ": Nick already in use");
    165     unless($self->owl_connected) {
    166         $self->disconnect;
     180    unless($self->connected) {
     181        $self->conn->disconnect;
    167182    }
    168183}
Note: See TracChangeset for help on using the changeset viewer.