App-SocialCalc-Multiplayer

 view release on metacpan or  search on metacpan

socialcalc/third-party/lib/PocketIO/Transport/Base.pm  view on Meta::CPAN

package PocketIO::Transport::Base;

use strict;
use warnings;

use JSON   ();
use Encode ();
use Try::Tiny;
use Scalar::Util qw(weaken);

use Plack::Request;
use PocketIO::Handle;
use PocketIO::Pool;

sub new {
    my $class = shift;

    my $self = bless {@_}, $class;

    weaken $self->{env};
    $self->{req} = Plack::Request->new($self->{env});

    return $self;
}

sub req { shift->{req} }
sub env { shift->{req}->{env} }

sub add_connection {
    my $self = shift;

    return PocketIO::Pool->add_connection(type => $self->name, req => $self->{req}, @_);
}

sub remove_connection {
    my $self = shift;

    PocketIO::Pool->remove_connection($_[0]);

    return $self;
}

sub find_connection {
    my $self = shift;

    return PocketIO::Pool->find_connection(@_);
}

sub client_connected {
    my $self = shift;
    my ($conn) = @_;

    return if $conn->is_connected;

    $self->_log_client_connected($conn);

    $conn->connected;
}

sub client_disconnected {
    my $self = shift;
    my ($conn) = @_;

    $self->_log_client_disconnected($conn);

    $conn->disconnected;

    $self->remove_connection($conn);



( run in 1.751 second using v1.01-cache-2.11-cpan-d8267643d1d )