The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

ZMQ::Raw::Socket - ZeroMQ Socket class

VERSION

version 0.11

DESCRIPTION

A ZMQ::Raw::Socket represents a ZeroMQ socket.

SYNOPSIS

        use ZMQ::Raw;

        # receive a single message-part
        my $msg = $socket->recvmsg();

        # receive all message parts
        my @msgs = $socket->recvmsg();

        # send multiple message parts
        $socket->sendmsg ('hello', 'world'); # flags cannot be used here

        # or
        my $msg1 = ZMQ::Raw::Message->new;
        $msg1->data ('hello');

        my $msg2 = ZMQ::Raw::Message->new;
        $msg2->data ('world');
        $socket->sendmsg ($msg1, $msgs2, 0); # flags can be used here

METHODS

new( $context, $type )

Create a new ZeroMQ socket with the specified $context. $type specifies the socket type, which determines the semantics of communication over the socket.

bind( $endpoint )

Bind the socket to a local endpoint which accepts incoming connections. The endpoint is a string consisting of a transport:// followed by an address. The transport specifies the underlying protocol to use, whereas the address specifies the transport-specific address to bind to. The following transports are provided:

  • "tcp"

    unicast transport using TCP

  • "ipc"

    local inter-process communication transport

  • "inproc"

    local in-process (inter-thread) communication transport

  • "pgm,epgm"

    reliable multicast transport using PGM

  • "vmci"

    virtual machine communications interface (VMCI)

unbind( $endpoint )

Unbind the socket from the endpoint.

connect( $endpoint )

Connect the socket to an endpoint which accepts incoming connections.

disconnect( $endpoint )

Disconnect the socket from the endpoint. Any outstanding messages physically received from the network but not yet received by the application will be discarded.

send( $buffer, $flags = 0)

Queue a message created from $buffer. $flags defaults to 0 but may be a combination of:

close( )

Close the socket. Any outstanding messages physically received from the network but not yet received by the application will be discarded.

monitor( $endpoint, $events)

Track socket events. Each call to this method creates a ZMQ_PAIR socket and binds that to the specified inproc $endpoint. In order to collect socket events, you must create your own ZMQ_PAIR socket and connect it to the $endpoint.

  • ZMQ::Raw->ZMQ_DONTWAIT

    Perform the operation in non-blocking mode. This method will return undef if the message cannot be sent immediately.

  • ZMQ::Raw->ZMQ_SNDMORE

    The message is part of a multi-part message and further message parts are to follow.

sendmsg( @msgs, $flags = 0)

Queue @msgs to be sent. Each message in @msgs that is a ZMQ::Raw::Message is still valid after this call, that is, they may be reused. Each item in @msgs may either be a ZMQ::Raw::Message object or a "normal" perl scalar. The $flags parameter is only available if all items in @msgs are ZMQ::Raw::Message objects. See the SYNOPSIS for usage examples.

recv( $flags = 0)

Receive a message. If there are no messages available the method will block until the request can be satisfied unless the ZMQ_DONTWAIT flag is specified. If a message is not available and ZMQ_DONTWAIT has been specified, this method will return undef immediately. If called in list context, this method will return each part of the message as a scalar item. In scalar context, each part of the message will be concatenated into a single scalar item.

recvmsg( $flags = 0)

Receive a message part or multiple messages parts if called in list context. Returns a ZMQ::Raw::Message object or an array of object.

setsockopt( $option, $value )

Set a socket option.

CONSTANTS

ZMQ_AFFINITY

ZMQ_IDENTITY

ZMQ_SUBSCRIBE

ZMQ_UNSUBSCRIBE

ZMQ_RATE

ZMQ_RECOVERY_IVL

ZMQ_SNDBUF

ZMQ_RCVBUF

ZMQ_RCVMORE

ZMQ_FD

ZMQ_EVENTS

ZMQ_TYPE

ZMQ_LINGER

ZMQ_RECONNECT_IVL

ZMQ_BACKLOG

ZMQ_RECONNECT_IVL_MAX

ZMQ_MAXMSGSIZE

ZMQ_SNDHWM

ZMQ_RCVHWM

ZMQ_MULTICAST_HOPS

ZMQ_RCVTIMEO

ZMQ_SNDTIMEO

ZMQ_LAST_ENDPOINT

ZMQ_ROUTER_MANDATORY

ZMQ_TCP_KEEPALIVE

ZMQ_TCP_KEEPALIVE_CNT

ZMQ_TCP_KEEPALIVE_IDLE

ZMQ_TCP_KEEPALIVE_INTVL

ZMQ_IMMEDIATE

ZMQ_XPUB_VERBOSE

ZMQ_ROUTER_RAW

ZMQ_IPV6

ZMQ_MECHANISM

ZMQ_PLAIN_SERVER

ZMQ_PLAIN_USERNAME

ZMQ_PLAIN_PASSWORD

ZMQ_CURVE_SERVER

ZMQ_CURVE_PUBLICKEY

ZMQ_CURVE_SECRETKEY

ZMQ_CURVE_SERVERKEY

ZMQ_PROBE_ROUTER

ZMQ_REQ_CORRELATE

ZMQ_REQ_RELAXED

ZMQ_CONFLATE

ZMQ_ZAP_DOMAIN

ZMQ_ROUTER_HANDOVER

ZMQ_TOS

ZMQ_CONNECT_RID

ZMQ_GSSAPI_SERVER

ZMQ_GSSAPI_PRINCIPAL

ZMQ_GSSAPI_SERVICE_PRINCIPAL

ZMQ_GSSAPI_PLAINTEXT

ZMQ_HANDSHAKE_IVL

ZMQ_SOCKS_PROXY

ZMQ_XPUB_NODROP

ZMQ_BLOCKY

ZMQ_XPUB_MANUAL

ZMQ_XPUB_WELCOME_MSG

ZMQ_STREAM_NOTIFY

ZMQ_INVERT_MATCHING

ZMQ_HEARTBEAT_IVL

ZMQ_HEARTBEAT_TTL

ZMQ_HEARTBEAT_TIMEOUT

ZMQ_XPUB_VERBOSER

ZMQ_CONNECT_TIMEOUT

ZMQ_TCP_MAXRT

ZMQ_THREAD_SAFE

ZMQ_MULTICAST_MAXTPDU

ZMQ_VMCI_BUFFER_SIZE

ZMQ_VMCI_BUFFER_MIN_SIZE

ZMQ_VMCI_BUFFER_MAX_SIZE

ZMQ_VMCI_CONNECT_TIMEOUT

ZMQ_USE_FD

AUTHOR

Jacques Germishuys <jacquesg@striata.com>

LICENSE AND COPYRIGHT

Copyright 2017 Jacques Germishuys.

This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.

See http://dev.perl.org/licenses/ for more information.