AnyEvent-Eris
view release on metacpan or search on metacpan
lib/AnyEvent/eris/Client.pm view on Meta::CPAN
$self->{'_client'} ||= tcp_connect $addr, $port, sub {
my ($fh) = @_
or AE::log fatal => "Connect failed: $!";
my $hdl; $hdl = AnyEvent::Handle->new(
fh => $fh,
on_error => sub {
AE::log error => $_[2];
$_[0]->destroy;
$inner_self->{'_reconnect_timer'} = AE::timer 10, 0, sub {
undef $inner_self->{'_reconnect_timer'};
$inner_self->_connect;
};
},
on_eof => sub { $hdl->destroy; AE::log info => 'Done.' },
on_read => sub {
$hdl->push_read (line => sub {
my ($hdl, $line) = @_;
lib/AnyEvent/eris/Client.pm view on Meta::CPAN
substr( $line, 0, length $_ ) eq $_
} @PROTOCOL_LINE_PREFIXES and return;
$inner_self->handle_message( $line, $hdl );
});
},
);
$inner_self->{'buffer'} = '';
# FIXME: should this really be in a timer?
# all the actions relating to a socket are deferred anyway
$inner_self->{'_setup_pipe_timer'} = AE::timer 0, 0, sub {
undef $inner_self->{'_setup_pipe_timer'};
$inner_self->setup_pipe($hdl);
};
};
return $self;
}
sub setup_pipe {
my ( $self, $handle ) = @_;
lib/AnyEvent/eris/Server.pm view on Meta::CPAN
$hdl->push_write("UNKNOWN COMMAND, Ignored.\015\012");
},
);
my $SID = $inner_self->_session_id($handle);
$handle->push_write("EHLO Streamer (KERNEL: $$:$SID)\n");
$inner_self->register_client( $SID, $handle );
};
$self->{'_timers'}{'flush'} = AE::timer 0.1, 0.1, sub {
$inner_self->flush_client;
};
$self->{'_timers'}{'stats'} = AE::timer 0, 60, sub {
$inner_self->stats;
};
# Statistics Tracking
$self->{'config'}{'GraphiteHost'}
and $self->graphite_connect;
return $self;
}
t/server/dispatching_messages.t view on Meta::CPAN
);
$registered_fullfeed++;
} else {
$msg_arrived++;
$cv->send('OK');
}
},
);
};
my $timer; $timer = AE::timer 0.05, 0, sub {
undef $timer;
$server->dispatch_message('Hello world');
};
is( $server->run($cv), 'OK', 'Server closed' );
is( $registered_fullfeed, 1, 'Fullfeed registered' );
is( $msg_arrived, 1, 'Message arrived (msg dispatching)' );
t/server/flush_client.t view on Meta::CPAN
if ( $line =~ /^EHLO/ ) {
($SID) = $line =~ /\(KERNEL:\s\d+:([a-fA-F0-9]+)\)/;
} elsif ( $line eq $buffer_msg ) {
$buffer_said_hi++;
$cv->send('OK');
}
},
);
};
my $timer; $timer = AE::timer 0.2, 0, sub {
undef $timer;
push @{ $server->{'buffers'}{$SID} }, $buffer_msg;
};
is( $server->run($cv), 'OK', 'Server closed' );
ok( $buffer_said_hi, 'Buffer was flushed (flush_client)' );
is_deeply( $server->{'buffers'}{$SID}, [], 'Buffers were emptied' );
t/server/run.t view on Meta::CPAN
use t::lib::Eris::Test tests => 2;
my ( $server, $cv ) = new_server;
can_ok( $server, 'run' );
my $t; $t = AE::timer 0, 0, sub {
undef $t;
$cv->send('OK');
};
is( $server->run($cv), 'OK', 'Server closed' );
( run in 0.568 second using v1.01-cache-2.11-cpan-49f99fa48dc )