IO::Async::Protocol

Section: User Contributed Perl Documentation (3pm)
Updated: 2022-08-19
Index Return to Main Contents
 

NAME

"IO::Async::Protocol" - base class for transport-based protocols  

DESCRIPTION

This subclass of IO::Async:Notifier provides storage for a IO::Async::Handle object, to act as a transport for some protocol. It contains an instance of the transport object, which it adds as a child notifier, allowing a level of independence from the actual transport being used. For example, a stream may actually be an IO::Async::SSLStream to allow the protocol to be used over SSL.

This class is not intended to be used directly, instead, see one of the subclasses

IO::Async::Protocol::Stream - base class for stream-based protocols
 

EVENTS

The following events are invoked, either using subclass methods or CODE references in parameters:  

on_closed

Optional. Invoked when the transport handle becomes closed.  

PARAMETERS

The following named parameters may be passed to "new" or "configure":  

transport => IO::Async::Handle

The IO::Async::Handle to delegate communications to.  

on_closed => CODE

CODE reference for the "on_closed" event.

When a new "transport" object is given, it will be configured by calling the "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 "teardown_transport".  

METHODS

 

transport

   $transport = $protocol->transport

Returns the stored transport object  

connect

   $protocol->connect( %args )

Sets up a connection to a peer, and configures the underlying "transport" for the Protocol.

Takes the following named arguments:

socktype => STRING or INT
Required. Identifies the socket type, and the type of continuation that will be used. If this value is "stream" or "SOCK_STREAM" then "on_stream" continuation will be used; otherwise "on_socket" will be used.
on_connected => CODE
Optional. If supplied, will be invoked once the connection has been established.

   $on_connected->( $protocol )

transport => IO::Async::Handle
Optional. If this is provided, it will immediately be configured as the transport (by calling "configure"), and the "on_connected" callback will be invoked. This is provided as a convenient shortcut.

Other arguments will be passed to the underlying IO::Async::Loop "connect" call.  

TRANSPORT DELEGATION

The following methods are delegated to the transport object

   close

 

SUBCLASS METHODS

"IO::Async::Protocol" is a base class provided so that specific subclasses of it provide more specific behaviour. The base class provides a number of methods that subclasses may wish to override.

If a subclass implements any of these, be sure to invoke the superclass method at some point within the code.  

setup_transport

   $protocol->setup_transport( $transport )

Called by "configure" when a new "transport" object is given, this method should perform whatever setup is required to wire the new transport object into the protocol object; typically by setting up event handlers.  

teardown_transport

   $protocol->teardown_transport( $transport )

The reverse of "setup_transport"; called by "configure" when a previously set-up transport object is about to be replaced.  

AUTHOR

Paul Evans <leonerd@leonerd.org.uk>


 

Index

NAME
DESCRIPTION
EVENTS
on_closed
PARAMETERS
transport => IO::Async::Handle
on_closed => CODE
METHODS
transport
connect
TRANSPORT DELEGATION
SUBCLASS METHODS
setup_transport
teardown_transport
AUTHOR

This document was created by man2html, using the manual pages.
Time: 13:53:56 GMT, March 29, 2024