package ZMQ::Message; use strict; sub new { my $class = shift; my $msg = @_ == 1 ? ZMQ::call( "zmq_msg_init_data", @_ ) : ZMQ::call( "zmq_msg_init" ) ; return $class->_wrap( $msg ); } sub _wrap { my ($class, $msg) = @_; bless { _msg => $msg }, $class; } BEGIN { foreach my $funcname ( qw(data size close) ) { eval sprintf <<'EOM', $funcname, $funcname; sub %s { my ($self) = @_; ZMQ::call( "zmq_msg_%s", $self->{_msg} ); } EOM die if $@; } foreach my $funcname ( qw(copy move) ) { eval sprintf <<'EOM', $funcname, $funcname; sub %s { my ($dst, $src) = @_; ZMQ::call( "zmq_msg_%s", $dst->{_msg}, $src->{_msg} ); } EOM die if $@; } } 1; __END__ =head1 NAME ZMQ::Message - ZMQ Message Object =head1 SYNOPSIS use ZMQ; my $msg = ZMQ::Message->new( "Hello World!" ); my $data = $msg->data(); my $size = $msg->size(); my $rv = $msg->copy( $src ); my $rv = $msg->move( $src ); my $rv = $msg->close(); =head1 DESCRIPTION A ZMQ::Context object represents a message to be passed over a ZMQ::Socket. =head2 ZMQ::Message->new([ $msg ]) Creates a new message. If C<$msg> is passed, calls C. Othewise C is called =head2 $msg->data() Retrieves the data in message =head2 $msg->size() Retrieves the size of the data in message =head2 $msg->copy( $src ) Copies contents of C<$src> to C<$msg> =head2 $msg->move( $src ) Moves contents of C<$src> to C<$msg> =head2 $msg->close() Terminates and fress C<$msg>'s underlying data structure. =cut