NAME
ZMQ::Socket - ZMQ Socket object
SYNOPSIS
use ZMQ;
use ZMQ::Constants qw(ZMQ_PUSH);
my $cxt = ZMQ::Context->new();
my $sock = $cxt->socket( ZMQ_PUSH );
# zmq 2.1.x
$sock->send( $msg );
my $msg = $sock->recv();
# zmq 3.1.x
$sock->send( $data, $len, $flags );
$sock->recv( $msg, $len, $flags );
$sock->sendmsg( $msg );
my $msg = $sock->recvmsg();
DESCRIPTION
A ZMQ::Socket object represents a 0MQ socket.
ZMQ::Socket object can only be created via ZMQ::Context objects, so there are no public constructors.
The types of sockets that you can create, and the semantics of the socket object varies greatly on the underlying version of libzmq, so please read the documents for libzmq for details.
METHODS
bind
The bind($endpoint)
method function creates an endpoint for accepting connections and binds it to the socket.
- inproc
-
Local in-process (inter-thread) communication transport.
- ipc
-
Local inter-process communication transport.
- tcp
-
Unicast transport using TCP.
- pgm, epgm
-
Reliable multicast transport using PGM.
connect
Connect to an existing endpoint. Takes an enpoint string as argument, see the documentation for bind($endpoint)
above.
If an error occurs ( zmq_connect()
returns a non-zero status ), then an exception is throw.
close
Closes and terminates the socket.
send
The semantics of this function varies greatly depending on the underlying version of libzmq.
For ZMQ::LibZMQ2:
$sock->send( $msg [, $flags] );
$sock->send( $raw_string [, $flags] );
For ZMQ::LibZMQ3:
$sock->send( $msg, $len [, $flags] );
sendmsg ( $msg [, $flags] )
The sendmsg($msg, $flags)
method queues the given message to be sent to the socket. The flags argument is a combination of the flags defined below.
sendmsg
is only available if you are using ZMQ::LibZMQ3
as the underlying library.
recv
The semantics of this function varies greatly depending on the underlying version of libzmq.
For ZMQ::LibZMQ2:
$msg = $sock->recv();
For ZMQ::LibZMQ3:
$sock->recv( $msg, $len [, $flags] );
recvmsg
The my $msg = $sock->recvmsg($flags)
method receives a message from the socket and returns it as a new ZMQ::Message
object. If there are no messages available on the specified socket the recvmsg()
method blocks until the request can be satisfied. The flags argument is a combination of the flags defined below.
recvmsg
is only available if you are using ZMQ::LibZMQ3
as the underlying library.
send_multipart( \@frames [, $flags] )
The send_multipart(\@frames, $flags)
method sends a multipart message to the socket. The method will send the frames with the ZMQ_SNDMORE
flag, except for the last. The flags argument is a combination of the flags defined below. There is no return value.
This method will use the right method for sending independent of the backend that is used.
recv_multipart( [$flags] )
The recv_multipart($flags)
method receives a multipart message from the socket and returns an array of ZMQ::Message
objects. The method will receive frames as long as the ZMQ_RCVMORE
flag is set on the socket. The flags argument is a combination of the flags defined below.
This method will use the right method for receiving independent of the backend that is used.
getsockopt
The my $optval = $sock->getsockopt(ZMQ_SOME_OPTION)
method call retrieves the value for the given socket option.
The list of option names (constants) varies depending on the underlying libzmq version. Please refer to the manual for libzmq for the correct list.
setsockopt
The $sock->setsockopt(ZMQ_SOME_OPTION, $value)
method call sets the specified option to the given value.
The list of option names (constants) varies depending on the underlying libzmq version. Please refer to the manual for libzmq for the correct list.
CAVEATS
ZMQ::Socket
objects aren't thread safe due to the underlying library. Therefore, they are currently not cloned when a new Perl ithread is spawned. The variables in the new thread that contained the socket in the parent thread will be a scalar reference to undef
in the new thread. This makes the Perl wrapper thread safe (i.e. no segmentation faults).
SEE ALSO
AUTHOR
Daisuke Maki <daisuke@endeworks.jp>
COPYRIGHT AND LICENSE
The ZMQ module is
Copyright (C) 2010 by Daisuke Maki
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.0 or, at your option, any later version of Perl 5 you may have available.