The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Reflex::Acceptor - non-blocking client socket acceptor

VERSION

version 0.071

SYNOPSIS

        package TcpEchoServer;

        use Moose;
        extends 'Reflex::Acceptor';
        use Reflex::Collection;
        use EchoStream;  # See eg directory.

        has clients => (
                is      => 'rw',
                isa     => 'Reflex::Collection',
                default => sub { Reflex::Collection->new() },
                handles => { remember_client => "remember" },
        );

        sub on_accept {
                my ($self, $args) = @_;
                $self->remember_client(
                        EchoStream->new(
                                handle => $args->{socket},
                                rd     => 1,
                        )
                );
        }

        sub on_error {
                my ($self, $args) = @_;
                warn "$args->{errfun} error $args->{errnum}: $args->{errstr}\n";
                $self->stop();
        }

DESCRIPTION

Reflex::Acceptor takes a listening socket and produces new sockets for clients that connect to it. It is almost entirely implemented in Reflex::Role::Accepting. That role's documentation contains important details that won't be covered here.

Public Attributes

listener

Reflex::Acceptor defines a single attribute, listner, which should be set to a listening socket of some kind. Reflex::Acceptor requires an externally supplied socket so that the user may specify any and all applicable socket options.

If necessary, the class may later supply a basic socket by default.

Reflex::Role::Accepting explains listener in more detail.

Public Methods

pause

pause() will temporarily stop the server from accepting more clients. See method_pause in Reflex::Role::Accepting for details.

resume

resume() will resume a temporarily stopped server so that it may accept more client connections. See method_resume in Reflex::Role::Accepting for details.

stop

stop() will permanently stop the server from accepting more clients. See method_stop in Reflex::Role::Accepting for details.

Callbacks

on_accept

on_accept is called whenever Perl's built-in accept() function returns a socket. Reflex::Role::Accepting explains the data returned with on_accept. If necessary, that role will also define a default on_accept handler that emits an "accept" event.

on_error

on_error is called whenever Perl's built-in accept() function returns an error. Reflex::Role::Accepting explains the data returned with on_error. If necessary, that role will also define a default on_error handler that emits an "error" event.

Public Events

Reflex::Acceptor emits events related to accepting client connections. These events are defined by Reflex::Role::Accepting, and they will be explained there.

accept

If no on_accept handler is set, then Reflex::Acceptor will emit an "accept" event for every client connection accepted. Reflex::Role::Accepting explains this event in more detail.

error

If no on_error handler is set, then Reflex::Acceptor will emit an "error" event every time accept() returns an error. Reflex::Role::Accepting explains this event in more detail.

EXAMPLES

The SYNOPSIS is an excerpt from eg/eg-34-tcp-server-echo.pl.

SEE ALSO

Reflex Reflex::Role::Accepting Reflex::Role::Connecting Reflex::Connector

"ACKNOWLEDGEMENTS" in Reflex "ASSISTANCE" in Reflex "AUTHORS" in Reflex "BUGS" in Reflex "BUGS" in Reflex "CONTRIBUTORS" in Reflex "COPYRIGHT" in Reflex "LICENSE" in Reflex "TODO" in Reflex