NAME

Mail::Sieve::Server::IOWrapper

SYNOPSIS

use Mail::Sieve::Server::IOWrapper;

DESCRIPTION

Wrapper for bridging the I/O between Mojolicious and Net::Server::Mail::ESMTP. This module is not meant to be used directly.

INTERFACE

Constructor

new

my $wrapper = Mail::Sieve::Server::IOWrapper->new(stream => $stream);

Create an instance. $stream is a required Mojo::IOLoop::Stream object.

Accessors

inr

my $ref_to_scalar = $wrapper->inr;

Reference to the input buffer. Data that arrives via "read_input" is mostly sent along, except for some few bytes that might be kept until something "complete" is available for parsing, much in the spirit of "Net::Server::Mail::process".

ofh

my $filehandle = $wrapper->ofh;

A filehandle that can be used by Net::Server::Mail::ESMTP for sending responses. Puts data in an internal buffer (see "outr") for later forwarding.

There is a dirty trick that blesses this filehandle into IO::Handle, to make Net::Server::Mail::ESMTP happy. It does not make me happy though.

outr

my $ref_to_scalar = $wrapper->outr;

Reference to the output buffer. Data printed to "ofh" ends up here and are eventually sent along to the stream via "write_output".

size

my $size = $wrapper->size;
$wrapper->size(1000);

Track the size of the data transferred so far.

stream

my $stream = $wrapper->stream;

Get the Mojo::IOLoop::Stream object that handles the actual data trasnfer with the peer.

Methods

read_input

my $some_bytes = $wrapper->read_input($input_bytes);

Returns data much like what "Net::Server::Mail::process" does.

reset

$wrapper->reset;

Clear buffers and reset the output filehandle.

reset_size

$wrapper->reset_size;

Set "size" back to 0.

write_output

$wrapper->write_output;

Flush the output buffer towards the "stream".

ANYTHING ELSE (INCLUDING AUTHOR, COPYRIGHT AND LICENSE)

See documentation for Mail::Sieve.