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 )