Changeset 167044b


Ignore:
Timestamp:
Aug 20, 2008, 2:16:43 AM (13 years ago)
Author:
Nelson Elhage <nelhage@mit.edu>
Branches:
master, debian, release-1.4, release-1.5, release-1.6, release-1.7, release-1.8, release-1.9
Children:
aef51f8
Parents:
5987370
Message:
Support string hook entries.
perlwrap.pm: Support calling and adding string hook entries in BarnOwl::Hook
IRC.pm: Switch our hooks to use string entries
Jabber.pm: Switch our hooks to use string entries
ModuleLoader.pm: No longer clear all hooks on reload

This should have the net effect that we can safely reload single
modules.
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • perl/lib/BarnOwl/ModuleLoader.pm

    r5987370 r167044b  
    103103                         BarnOwl/Message.pm BarnOwl/Style.pm));
    104104
    105     $BarnOwl::Hooks::startup->clear;
    106     $BarnOwl::Hooks::getBuddyList->clear;
    107     $BarnOwl::Hooks::mainLoop->clear;
    108     $BarnOwl::Hooks::shutdown->clear;
    109     $BarnOwl::Hooks::receiveMessage->clear;
    110105    local $SIG{__WARN__} = \&squelch_redefine;
    111106    $class->load_all;
  • perl/modules/IRC/lib/BarnOwl/Module/IRC.pm

    rd264c6d r167044b  
    120120}
    121121
    122 $BarnOwl::Hooks::startup->add(\&startup);
    123 $BarnOwl::Hooks::shutdown->add(\&shutdown);
    124 #$BarnOwl::Hooks::mainLoop->add(\&mainloop_hook);
     122$BarnOwl::Hooks::startup->add('BarnOwl::Module::IRC::startup');
     123$BarnOwl::Hooks::shutdown->add('BarnOwl::Module::IRC::shutdown');
    125124
    126125################################################################################
  • perl/modules/Jabber/lib/BarnOwl/Module/Jabber.pm

    rbfc127b r167044b  
    6868        register_keybindings();
    6969        register_filters();
    70         $BarnOwl::Hooks::mainLoop->add(\&onMainLoop);
    71         $BarnOwl::Hooks::getBuddyList->add(\&onGetBuddyList);
     70        $BarnOwl::Hooks::mainLoop->add("BarnOwl::Module::Jabber::onMainLoop");
     71        $BarnOwl::Hooks::getBuddyList->add("BarnOwl::Module::Jabber::onGetBuddyList");
    7272        $vars{show} = '';
    7373        BarnOwl::new_variable_bool("jabber:show_offline_buddies",
     
    9292}
    9393
    94 $BarnOwl::Hooks::startup->add(\&onStart);
     94$BarnOwl::Hooks::startup->add("BarnOwl::Module::Jabber::onStart");
    9595
    9696sub onMainLoop {
  • perlwrap.pm

    r0f9eca7 r167044b  
    603603    my $self = shift;
    604604    my @args = @_;
    605     return map {$_->(@args)} @$self;
     605    return map {$self->_run($_,@args)} @$self;
     606}
     607
     608sub _run {
     609    my $self = shift;
     610    my $fn = shift;
     611    my @args = @_;
     612    no strict 'refs';
     613    return $fn->(@args);
    606614}
    607615
     
    615623    my $self = shift;
    616624    my $func = shift;
    617     die("Not a coderef!") unless ref($func) eq 'CODE';
     625    die("Not a coderef!") unless ref($func) eq 'CODE' || !ref($func);
     626    return if grep {$_ eq $func} @$self;
    618627    push @$self, $func;
    619628}
Note: See TracChangeset for help on using the changeset viewer.