---
name: "IO::Async::Protocol::LineStream"
section: "3pm"
platform: "linux"
package: "libio-async-perl"
version: "0.804-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/IO::Async::Protocol::LineStream"
---

# IO::Async::Protocol::LineStream(3pm)

stream-based protocols using lines of text

## NAME

"IO::Async::Protocol::LineStream" - stream-based protocols using lines of text

## SYNOPSIS

Most likely this class will be subclassed to implement a particular network protocol.

```
   package Net::Async::HelloWorld;
   use strict;
   use warnings;
   use base qw( IO::Async::Protocol::LineStream );
   sub on_read_line
   {
      my $self = shift;
      my ( $line ) = @_;
      if( $line =~ m/^HELLO (.*)/ ) {
         my $name = $1;
         $self->invoke_event( on_hello => $name );
      }
   }
   sub send_hello
   {
      my $self = shift;
      my ( $name ) = @_;
      $self->write_line( "HELLO $name" );
   }
```

This small example elides such details as error handling, which a real protocol implementation would be likely to contain.

## DESCRIPTION

## EVENTS

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

### on\_read\_line $line

Invoked when a new complete line of input is received.

## PARAMETERS

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

### on\_read\_line =\> CODE

CODE reference for the `"on_read_line"` event.

## METHODS

### write\_line

```
   $lineprotocol->write_line( $text );
```

Writes a line of text to the transport stream. The text will have the end-of-line marker appended to it; `$text` should not end with it.

## AUTHOR

Paul Evans \<leonerd@leonerd.org.uk\>
