Acme-Sort-Sleep
view release on metacpan or search on metacpan
local/lib/perl5/IO/Async/Protocol.pm view on Meta::CPAN
=cut
=head1 EVENTS
The following events are invoked, either using subclass methods or CODE
references in parameters:
=head2 on_closed
Optional. Invoked when the transport handle becomes closed.
=cut
=head1 PARAMETERS
The following named parameters may be passed to C<new> or C<configure>:
=head2 transport => IO::Async::Handle
The L<IO::Async::Handle> to delegate communications to.
=head2 on_closed => CODE
CODE reference for the C<on_closed> event.
When a new C<transport> object is given, it will be configured by calling the
C<setup_transport> method, then added as a child notifier. If a different
transport object was already configured, this will first be removed and
deconfigured using the C<teardown_transport>.
=cut
sub configure
{
my $self = shift;
my %params = @_;
for (qw( on_closed )) {
$self->{$_} = delete $params{$_} if exists $params{$_};
}
if( exists $params{transport} ) {
my $transport = delete $params{transport};
if( $self->{transport} ) {
$self->remove_child( $self->transport );
$self->teardown_transport( $self->transport );
}
$self->{transport} = $transport;
if( $transport ) {
$self->setup_transport( $self->transport );
$self->add_child( $self->transport );
}
}
$self->SUPER::configure( %params );
}
=head1 METHODS
=cut
=head2 transport
$transport = $protocol->transport
Returns the stored transport object
=cut
sub transport
{
my $self = shift;
return $self->{transport};
}
=head2 connect
$protocol->connect( %args )
Sets up a connection to a peer, and configures the underlying C<transport> for
the Protocol.
Takes the following named arguments:
=over 8
=item socktype => STRING or INT
Required. Identifies the socket type, and the type of continuation that will
be used. If this value is C<"stream"> or C<SOCK_STREAM> then C<on_stream>
continuation will be used; otherwise C<on_socket> will be used.
=item on_connected => CODE
Optional. If supplied, will be invoked once the connection has been
established.
$on_connected->( $protocol )
=item transport => IO::Async::Handle
Optional. If this is provided, it will immediately be configured as the
transport (by calling C<configure>), and the C<on_connected> callback will be
invoked. This is provided as a convenient shortcut.
=back
Other arguments will be passed to the underlying L<IO::Async::Loop> C<connect>
call.
=cut
sub connect
{
my $self = shift;
( run in 1.528 second using v1.01-cache-2.11-cpan-99c4e6809bf )