809
+ − 1 package TestConnection;
+ − 2
+ − 3 use strict;
+ − 4 use warnings;
+ − 5 use parent 'AnyEvent::XMPP::IM::Connection';
+ − 6
+ − 7 use 5.010;
+ − 8
+ − 9 our $HOST = 'localhost';
+ − 10 our $TIMEOUT = 5;
+ − 11 our %PASSWORD_FOR = (
+ − 12 one => '12345',
+ − 13 two => '23451',
+ − 14 three => '34512',
+ − 15 four => '45123',
+ − 16 five => '51234',
866
+ − 17 six => '123456',
875
+ − 18 seven => '1234567',
809
+ − 19 );
+ − 20
+ − 21 sub new {
+ − 22 my ( $class, $username, %options ) = @_;
+ − 23
+ − 24 my $cond = AnyEvent->condvar;
+ − 25 my $timer = AnyEvent->timer(
+ − 26 after => $TIMEOUT,
+ − 27 cb => sub {
+ − 28 $cond->send('timeout');
+ − 29 },
+ − 30 );
+ − 31
+ − 32 my $self = $class->SUPER::new(
+ − 33 username => $username,
+ − 34 domain => $HOST,
+ − 35 password => $options{'password'} // $PASSWORD_FOR{$username},
1465
+ − 36 resource => 'test bot',
809
+ − 37 );
+ − 38
+ − 39 $self->reg_cb(error => sub {
+ − 40 my ( undef, $error ) = @_;
+ − 41
+ − 42 $cond->send($error->string);
+ − 43 });
+ − 44
+ − 45 bless $self, $class;
+ − 46
+ − 47 $self->{'condvar'} = $cond;
+ − 48 $self->{'timeout_timer'} = $timer;
+ − 49
+ − 50 $self->connect;
+ − 51
+ − 52 return $self;
+ − 53 }
+ − 54
+ − 55 sub cond {
+ − 56 my ( $self ) = @_;
+ − 57
+ − 58 return $self->{'condvar'};
+ − 59 }
+ − 60
+ − 61 1;