Changeset 397 for bot


Ignore:
Timestamp:
11/11/11 17:40:04 (12 years ago)
Author:
nanardon
Message:
  • add timeout to reconnect to server
Location:
bot/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • bot/trunk/MANIFEST

    r378 r397  
    88lib/Sophie/Bot/Term.pm 
    99lib/Sophie/Bot.pm 
     10sophie-tools.spec.in 
    1011t/Sophie-Bot.t 
  • bot/trunk/lib/Sophie/Bot/IRC.pm

    r302 r397  
    88 
    99our $VERSION = '0.01'; 
     10 
     11sub PING_INTERVAL { 60 } 
     12sub NO_PONG_TOUT  { 5  } 
    1013 
    1114sub setup_server { 
     
    2528        Server   => $server, 
    2629        Ircname  => 'Rpm2sql', 
    27         Debug    => 0, 
     30        Debug    => 1, 
    2831    ); 
    2932  
     
    3740        }, 
    3841        package_states => [ 
    39             ref($self)  => [ qw(_start irc_001 irc_public irc_msg) ], 
     42            ref($self)  => [ qw(_start irc_001 irc_public irc_msg ping_server 
     43                irc_pong) ], 
    4044        ], 
    4145    );  
     
    4448sub _start { 
    4549    my $heap = $_[HEAP]; 
    46     my $irc = $heap->{irc}; 
     50    my $kernel = $_[KERNEL]; 
     51    my $irc = $heap->{irc}; 
     52 
    4753    $irc->yield('register', 'all', '001'); 
    4854    $irc->yield('connect', { }); 
     55 
     56    $kernel->delay( 'ping_server' => PING_INTERVAL ); 
     57} 
     58 
     59sub ping_server { 
     60    my $heap = $_[HEAP]; 
     61    my $kernel = $_[KERNEL]; 
     62    $heap->{nopong} ||= 0; 
     63    if ($heap->{nopong} >= NO_PONG_TOUT) { 
     64        $heap->{irc}->yield( 'connect', { } ); 
     65        return; 
     66    } 
     67    $heap->{nopong}++; 
     68    $heap->{irc}->yield( 'ping' => scalar(time()) ); 
     69    $kernel->delay( 'ping_server' => PING_INTERVAL ); 
     70} 
     71 
     72sub irc_pong { 
     73    my $heap = $_[HEAP]; 
     74    my $kernel = $_[KERNEL]; 
     75    $heap->{nopong} = 0; 
     76} 
     77 
     78sub irc_433  { 
     79    my $heap = $_[HEAP]; 
     80    my $irc = $heap->{irc}; 
     81    my $self = $heap->{sophie}; 
     82 
     83    die "Nick already in use\n"; 
    4984} 
    5085 
Note: See TracChangeset for help on using the changeset viewer.