package POEx::ZMQ3::Sockets::ZMQSocket;
## Internal to POEx::ZMQ3::Sockets.
use 5.10.1;
use Carp;
use Moo;
has is_closing => (
is => 'rw',
default => sub { 0 },
);
has zsock => (
is => 'ro',
required => 1,
);
has handle => (
is => 'ro',
required => 1,
);
has fd => (
is => 'ro',
required => 1,
);
has buffer => (
is => 'rw',
default => sub { [] },
);
{
package
POEx::ZMQ3::Sockets::ZMQSocket::_BUF;
use Carp 'confess';
use strictures 1;
sub DATA () { 0 }
sub FLAGS () { 1 }
sub new {
my ($class, %params) = @_;
bless [
( $params{data} // confess 'Expected "data" parameter' ),
$params{flags}
], $class
}
sub data { $_[0]->[DATA] }
sub flags { $_[0]->[FLAGS] }
}
sub new_buffer_item {
POEx::ZMQ3::Sockets::ZMQSocket::_BUF->new( @_[1 .. $#_] )
}
1;