-
-
09 Nov 2021 01:32:32 UTC
- Distribution: Mojo-IOLoop-Stream-Role-LineBuffer
- Module version: 0.009
- Source (raw)
- Browse (raw)
- Changes
- Homepage
- How to Contribute
- Repository
- Issues (0)
- Testers (342 / 6 / 1)
- Kwalitee
Bus factor: 1- 95.12% Coverage
- License: artistic_2
- Perl: v5.10.1
- Activity
24 month- Tools
- Download (14.07KB)
- MetaCPAN Explorer
- Permissions
- Subscribe to distribution
- Permalinks
- This version
- Latest version
NAME
Mojo::IOLoop::Stream::Role::LineBuffer - Read and write streams by lines
SYNOPSIS
use Mojo::IOLoop; Mojo::IOLoop->client({port => 3000} => sub { my ($loop, $err, $stream) = @_; $stream->with_roles('+LineBuffer')->watch_lines->on(read_line => sub { my ($stream, $line) = @_; say "Received line: $line"; $stream->write_line('Line received'); }); });
DESCRIPTION
Mojo::IOLoop::Stream::Role::LineBuffer composes the method "watch_lines" which causes a Mojo::IOLoop::Stream object to emit the "read_line" event for each line received. The "write_line" method is also provided to add a line separator to the passed data before writing.
EVENTS
Mojo::IOLoop::Stream::Role::LineBuffer can emit the following events.
read_line
$stream->on(read_line => sub { my ($stream, $line, $separator) = @_; ... });
Emitted when a line ending in "read_line_separator" arrives on the stream, and when the stream closes if data is still buffered. The separator is passed as a separate argument if present.
ATTRIBUTES
Mojo::IOLoop::Stream::Role::LineBuffer composes the following attributes.
read_line_separator
my $separator = $stream->read_line_separator; $stream = $stream->read_line_separator(qr/\x0D\x0A/);
Regular expression to indicate new lines in received bytes. Defaults to a newline (LF) character optionally preceded by a CR character (
\x0D?\x0A
). Note that if you set this to the generic newline or\v
(vertical whitespace), this may match the CR character of a CR/LF sequence and consider the LF as a separate line if they are read separately.write_line_separator
my $separator = $stream->write_line_separator; $stream = $stream->write_line_separator("\x0A");
Byte sequence to indicate new lines in data written with "write_line". Defaults to the network newline CR/LF (
\x0D\x0A
).METHODS
Mojo::IOLoop::Stream::Role::LineBuffer composes the following methods.
watch_lines
$stream = $stream->watch_lines;
Subscribe to the "read" in Mojo::IOLoop::Stream and "close" in Mojo::IOLoop::Stream events, to buffer received bytes and emit "read_line" when "read_line_separator" is encountered or the stream is closed with buffered data.
write_line
$stream = $stream->write_line($bytes); $stream = $stream->write_line($bytes => sub {...});
Write a line to the stream by appending "write_line_separator" to the data. The optional drain callback will be executed once all data has been written.
BUGS
Report any issues on the public bugtracker.
AUTHOR
Dan Book <dbook@cpan.org>
COPYRIGHT AND LICENSE
This software is Copyright (c) 2018 by Dan Book.
This is free software, licensed under:
The Artistic License 2.0 (GPL Compatible)
SEE ALSO
Mojo::IOLoop::LineReader, MojoX::LineStream, POE::Filter::Line, IO::Async::Protocol::LineStream
Module Install Instructions
To install Mojo::IOLoop::Stream::Role::LineBuffer, copy and paste the appropriate command in to your terminal.
cpanm Mojo::IOLoop::Stream::Role::LineBuffer
perl -MCPAN -e shell install Mojo::IOLoop::Stream::Role::LineBuffer
For more information on module installation, please visit the detailed CPAN module installation guide.