App-SocialCalc-Multiplayer
view release on metacpan or search on metacpan
socialcalc/third-party/lib/PocketIO/Connection.pm view on Meta::CPAN
package PocketIO::Connection;
use strict;
use warnings;
use AnyEvent;
use JSON ();
use Encode ();
use Try::Tiny;
use PocketIO::Pool;
use constant DEBUG => $ENV{POCKETIO_CONNECTION_DEBUG};
sub new {
my $class = shift;
my $self = {@_};
bless $self, $class;
$self->{connect_timeout} ||= 15;
$self->{reconnect_timeout} ||= 15;
$self->{max_messages_to_stage} ||= 32;
$self->{messages} = [];
$self->{on_connect_failed} ||= sub { };
$self->{on_connect} ||= sub { };
$self->{on_reconnect} ||= sub { };
$self->{on_reconnect_failed} ||= sub { };
$self->{on_message} ||= sub { };
$self->{on_disconnect} ||= sub { };
$self->{on_error} ||= sub { };
$self->{data} = '';
DEBUG && warn "Connection created\n";
return $self;
}
sub type { shift->{type} }
sub is_connected { $_[0]->{is_connected} }
sub connecting {
my $self = shift;
DEBUG && warn "State 'connecting'\n";
$self->{connect_timer} = AnyEvent->timer(
after => $self->{connect_timeout},
cb => sub {
DEBUG && warn "Timeout 'connect_timeout'";
$self->on('connect_failed')->($self);
}
);
}
sub reconnecting {
my $self = shift;
DEBUG && warn "State 'reconnecting'\n";
$self->{reconnect_timer} = AnyEvent->timer(
after => $self->{reconnect_timeout},
cb => sub {
DEBUG && warn "Timeout 'reconnect_timeout'\n";
( run in 2.354 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )