line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
package ZMQ::Raw::Socket; |
2
|
|
|
|
|
|
|
$ZMQ::Raw::Socket::VERSION = '0.37'; |
3
|
14
|
|
|
99
|
|
76
|
use strict; |
|
14
|
|
|
|
|
22
|
|
|
14
|
|
|
|
|
321
|
|
4
|
14
|
|
|
94
|
|
55
|
use warnings; |
|
14
|
|
|
|
|
21
|
|
|
14
|
|
|
|
|
308
|
|
5
|
14
|
|
|
14
|
|
91
|
use Carp; |
|
14
|
|
|
|
|
22
|
|
|
14
|
|
|
|
|
885
|
|
6
|
14
|
|
|
14
|
|
101
|
use ZMQ::Raw; |
|
14
|
|
|
|
|
27
|
|
|
14
|
|
|
|
|
1606
|
|
7
|
|
|
|
|
|
|
|
8
|
0
|
|
|
0
|
|
0
|
sub CLONE_SKIP { 1 } |
9
|
|
|
|
|
|
|
|
10
|
|
|
|
|
|
|
sub AUTOLOAD |
11
|
|
|
|
|
|
|
{ |
12
|
|
|
|
|
|
|
# This AUTOLOAD is used to 'autoload' constants from the constant() |
13
|
|
|
|
|
|
|
# XS function. |
14
|
|
|
|
|
|
|
|
15
|
77
|
|
|
77
|
|
480
|
my $constname; |
16
|
77
|
|
|
|
|
83
|
our $AUTOLOAD; |
17
|
77
|
|
|
|
|
397
|
($constname = $AUTOLOAD) =~ s/.*:://; |
18
|
77
|
50
|
|
|
|
191
|
croak "&ZMQ::Raw::Socket::_constant not defined" if $constname eq '_constant'; |
19
|
77
|
|
|
|
|
256
|
my ($error, $val) = _constant ($constname); |
20
|
77
|
50
|
|
|
|
131
|
if ($error) { croak $error; } |
|
0
|
|
|
|
|
0
|
|
21
|
|
|
|
|
|
|
{ |
22
|
14
|
|
|
14
|
|
79
|
no strict 'refs'; |
|
14
|
|
|
|
|
28
|
|
|
14
|
|
|
|
|
1486
|
|
|
77
|
|
|
|
|
88
|
|
23
|
77
|
|
|
85
|
|
455
|
*$AUTOLOAD = sub { $val }; |
|
85
|
|
|
|
|
1314
|
|
24
|
|
|
|
|
|
|
} |
25
|
77
|
|
|
|
|
373
|
goto &$AUTOLOAD; |
26
|
|
|
|
|
|
|
} |
27
|
|
|
|
|
|
|
|
28
|
|
|
|
|
|
|
=head1 NAME |
29
|
|
|
|
|
|
|
|
30
|
|
|
|
|
|
|
ZMQ::Raw::Socket - ZeroMQ Socket class |
31
|
|
|
|
|
|
|
|
32
|
|
|
|
|
|
|
=head1 VERSION |
33
|
|
|
|
|
|
|
|
34
|
|
|
|
|
|
|
version 0.37 |
35
|
|
|
|
|
|
|
|
36
|
|
|
|
|
|
|
=head1 DESCRIPTION |
37
|
|
|
|
|
|
|
|
38
|
|
|
|
|
|
|
A L represents a ZeroMQ socket. |
39
|
|
|
|
|
|
|
|
40
|
|
|
|
|
|
|
=head1 SYNOPSIS |
41
|
|
|
|
|
|
|
|
42
|
|
|
|
|
|
|
use ZMQ::Raw; |
43
|
|
|
|
|
|
|
|
44
|
|
|
|
|
|
|
# receive a single message-part |
45
|
|
|
|
|
|
|
my $msg = $socket->recvmsg(); |
46
|
|
|
|
|
|
|
|
47
|
|
|
|
|
|
|
# receive all message parts |
48
|
|
|
|
|
|
|
my @msgs = $socket->recvmsg(); |
49
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
# send multiple message parts |
51
|
|
|
|
|
|
|
$socket->sendmsg ('hello', 'world'); # flags cannot be used here |
52
|
|
|
|
|
|
|
|
53
|
|
|
|
|
|
|
# or |
54
|
|
|
|
|
|
|
my $msg1 = ZMQ::Raw::Message->new; |
55
|
|
|
|
|
|
|
$msg1->data ('hello'); |
56
|
|
|
|
|
|
|
|
57
|
|
|
|
|
|
|
my $msg2 = ZMQ::Raw::Message->new; |
58
|
|
|
|
|
|
|
$msg2->data ('world'); |
59
|
|
|
|
|
|
|
$socket->sendmsg ($msg1, $msgs2, 0); # flags can be used here |
60
|
|
|
|
|
|
|
|
61
|
|
|
|
|
|
|
=head1 METHODS |
62
|
|
|
|
|
|
|
|
63
|
|
|
|
|
|
|
=head2 new( $context, $type ) |
64
|
|
|
|
|
|
|
|
65
|
|
|
|
|
|
|
Create a new ZeroMQ socket with the specified C<$context>. C<$type> specifies |
66
|
|
|
|
|
|
|
the socket type, which determines the semantics of communication over the |
67
|
|
|
|
|
|
|
socket. |
68
|
|
|
|
|
|
|
|
69
|
|
|
|
|
|
|
=head2 bind( $endpoint ) |
70
|
|
|
|
|
|
|
|
71
|
|
|
|
|
|
|
Bind the socket to a local endpoint which accepts incoming connections. The |
72
|
|
|
|
|
|
|
endpoint is a string consisting of a transport:// followed by an address. The |
73
|
|
|
|
|
|
|
transport specifies the underlying protocol to use, whereas the address |
74
|
|
|
|
|
|
|
specifies the transport-specific address to bind to. The following transports |
75
|
|
|
|
|
|
|
are provided: |
76
|
|
|
|
|
|
|
|
77
|
|
|
|
|
|
|
=over 4 |
78
|
|
|
|
|
|
|
|
79
|
|
|
|
|
|
|
=item * "tcp" |
80
|
|
|
|
|
|
|
|
81
|
|
|
|
|
|
|
unicast transport using TCP |
82
|
|
|
|
|
|
|
|
83
|
|
|
|
|
|
|
=item * "ipc" |
84
|
|
|
|
|
|
|
|
85
|
|
|
|
|
|
|
local inter-process communication transport |
86
|
|
|
|
|
|
|
|
87
|
|
|
|
|
|
|
=item * "inproc" |
88
|
|
|
|
|
|
|
|
89
|
|
|
|
|
|
|
local in-process (inter-thread) communication transport |
90
|
|
|
|
|
|
|
|
91
|
|
|
|
|
|
|
=item * "pgm,epgm" |
92
|
|
|
|
|
|
|
|
93
|
|
|
|
|
|
|
reliable multicast transport using PGM |
94
|
|
|
|
|
|
|
|
95
|
|
|
|
|
|
|
=item * "vmci" |
96
|
|
|
|
|
|
|
|
97
|
|
|
|
|
|
|
virtual machine communications interface (VMCI) |
98
|
|
|
|
|
|
|
|
99
|
|
|
|
|
|
|
=back |
100
|
|
|
|
|
|
|
|
101
|
|
|
|
|
|
|
=head2 unbind( $endpoint ) |
102
|
|
|
|
|
|
|
|
103
|
|
|
|
|
|
|
Unbind the socket from the endpoint. |
104
|
|
|
|
|
|
|
|
105
|
|
|
|
|
|
|
=head2 connect( $endpoint ) |
106
|
|
|
|
|
|
|
|
107
|
|
|
|
|
|
|
Connect the socket to an endpoint which accepts incoming connections. |
108
|
|
|
|
|
|
|
|
109
|
|
|
|
|
|
|
=head2 disconnect( $endpoint ) |
110
|
|
|
|
|
|
|
|
111
|
|
|
|
|
|
|
Disconnect the socket from the endpoint. Any outstanding messages physically |
112
|
|
|
|
|
|
|
received from the network but not yet received by the application will be |
113
|
|
|
|
|
|
|
discarded. |
114
|
|
|
|
|
|
|
|
115
|
|
|
|
|
|
|
=head2 send( $buffer, $flags = 0) |
116
|
|
|
|
|
|
|
|
117
|
|
|
|
|
|
|
Queue a message created from C<$buffer>. C<$flags> defaults to C<0> but may |
118
|
|
|
|
|
|
|
be a combination of: |
119
|
|
|
|
|
|
|
|
120
|
|
|
|
|
|
|
=over 4 |
121
|
|
|
|
|
|
|
|
122
|
|
|
|
|
|
|
=item * CZMQ_DONTWAIT> |
123
|
|
|
|
|
|
|
|
124
|
|
|
|
|
|
|
Perform the operation in non-blocking mode. This method will return |
125
|
|
|
|
|
|
|
C if the message cannot be sent immediately. |
126
|
|
|
|
|
|
|
|
127
|
|
|
|
|
|
|
=item * CZMQ_SNDMORE> |
128
|
|
|
|
|
|
|
|
129
|
|
|
|
|
|
|
The message is part of a multi-part message and further message parts are to |
130
|
|
|
|
|
|
|
follow. |
131
|
|
|
|
|
|
|
|
132
|
|
|
|
|
|
|
=back |
133
|
|
|
|
|
|
|
|
134
|
|
|
|
|
|
|
This method may return C (or an empty list if called in list context) if |
135
|
|
|
|
|
|
|
the system call was interrupt or if the operation cannot be completed |
136
|
|
|
|
|
|
|
immediately, after which it may be reattempted. |
137
|
|
|
|
|
|
|
|
138
|
|
|
|
|
|
|
=head2 close( ) |
139
|
|
|
|
|
|
|
|
140
|
|
|
|
|
|
|
Close the socket. Any outstanding messages physically received from the network |
141
|
|
|
|
|
|
|
but not yet received by the application will be discarded. |
142
|
|
|
|
|
|
|
|
143
|
|
|
|
|
|
|
=head2 monitor( $endpoint, $events) |
144
|
|
|
|
|
|
|
|
145
|
|
|
|
|
|
|
Track socket events. Each call to this method creates a C socket and |
146
|
|
|
|
|
|
|
binds that to the specified inproc C<$endpoint>. In order to collect socket |
147
|
|
|
|
|
|
|
events, you must create your own C socket and connect it to the |
148
|
|
|
|
|
|
|
C<$endpoint>. |
149
|
|
|
|
|
|
|
|
150
|
|
|
|
|
|
|
=head2 sendmsg( @msgs, $flags = 0) |
151
|
|
|
|
|
|
|
|
152
|
|
|
|
|
|
|
Queue C<@msgs> to be sent. Each message in C<@msgs> that is a L> |
153
|
|
|
|
|
|
|
is still valid after this call, that is, they may be reused. Each item in C<@msgs> |
154
|
|
|
|
|
|
|
may either be a L> object or a "normal" perl scalar. The |
155
|
|
|
|
|
|
|
C<$flags> parameter is only available if all items in C<@msgs> are L> |
156
|
|
|
|
|
|
|
objects. See the SYNOPSIS for usage examples. |
157
|
|
|
|
|
|
|
|
158
|
|
|
|
|
|
|
This method may return C (or an empty list if called in list context) if |
159
|
|
|
|
|
|
|
the system call was interrupt or if the operation cannot be completed |
160
|
|
|
|
|
|
|
immediately, after which it may be reattempted. |
161
|
|
|
|
|
|
|
|
162
|
|
|
|
|
|
|
=head2 recv( $flags = 0) |
163
|
|
|
|
|
|
|
|
164
|
|
|
|
|
|
|
Receive a message. If there are no messages available the method will block |
165
|
|
|
|
|
|
|
until the request can be satisfied unless the C flag is specified. |
166
|
|
|
|
|
|
|
If a message is not available and C has been specified, this |
167
|
|
|
|
|
|
|
method will return C immediately. If called in list context, this method |
168
|
|
|
|
|
|
|
will return each part of the message as a scalar item. In scalar context, each |
169
|
|
|
|
|
|
|
part of the message will be concatenated into a single scalar item. |
170
|
|
|
|
|
|
|
|
171
|
|
|
|
|
|
|
This method may return C (or an empty list if called in list context) if |
172
|
|
|
|
|
|
|
the system call was interrupt or if the operation cannot be completed |
173
|
|
|
|
|
|
|
immediately, after which it may be reattempted. |
174
|
|
|
|
|
|
|
|
175
|
|
|
|
|
|
|
=head2 recvmsg( $flags = 0) |
176
|
|
|
|
|
|
|
|
177
|
|
|
|
|
|
|
Receive a message part or multiple messages parts if called in list context. |
178
|
|
|
|
|
|
|
Returns a L> object or an array of object. |
179
|
|
|
|
|
|
|
|
180
|
|
|
|
|
|
|
This method may return C (or an empty list if called in list context) if |
181
|
|
|
|
|
|
|
the system call was interrupt or if the operation cannot be completed |
182
|
|
|
|
|
|
|
immediately, after which it may be reattempted. |
183
|
|
|
|
|
|
|
|
184
|
|
|
|
|
|
|
=head2 setsockopt( $option, $value ) |
185
|
|
|
|
|
|
|
|
186
|
|
|
|
|
|
|
Set a socket option. |
187
|
|
|
|
|
|
|
|
188
|
|
|
|
|
|
|
=head2 join( $group ) |
189
|
|
|
|
|
|
|
|
190
|
|
|
|
|
|
|
Join a group. |
191
|
|
|
|
|
|
|
|
192
|
|
|
|
|
|
|
=head2 leave( $group ) |
193
|
|
|
|
|
|
|
|
194
|
|
|
|
|
|
|
Leave a group. |
195
|
|
|
|
|
|
|
|
196
|
|
|
|
|
|
|
=head1 CONSTANTS |
197
|
|
|
|
|
|
|
|
198
|
|
|
|
|
|
|
=head2 ZMQ_AFFINITY |
199
|
|
|
|
|
|
|
|
200
|
|
|
|
|
|
|
=head2 ZMQ_IDENTITY |
201
|
|
|
|
|
|
|
|
202
|
|
|
|
|
|
|
=head2 ZMQ_SUBSCRIBE |
203
|
|
|
|
|
|
|
|
204
|
|
|
|
|
|
|
=head2 ZMQ_UNSUBSCRIBE |
205
|
|
|
|
|
|
|
|
206
|
|
|
|
|
|
|
=head2 ZMQ_RATE |
207
|
|
|
|
|
|
|
|
208
|
|
|
|
|
|
|
=head2 ZMQ_RECOVERY_IVL |
209
|
|
|
|
|
|
|
|
210
|
|
|
|
|
|
|
=head2 ZMQ_SNDBUF |
211
|
|
|
|
|
|
|
|
212
|
|
|
|
|
|
|
=head2 ZMQ_RCVBUF |
213
|
|
|
|
|
|
|
|
214
|
|
|
|
|
|
|
=head2 ZMQ_RCVMORE |
215
|
|
|
|
|
|
|
|
216
|
|
|
|
|
|
|
=head2 ZMQ_FD |
217
|
|
|
|
|
|
|
|
218
|
|
|
|
|
|
|
=head2 ZMQ_EVENTS |
219
|
|
|
|
|
|
|
|
220
|
|
|
|
|
|
|
=head2 ZMQ_TYPE |
221
|
|
|
|
|
|
|
|
222
|
|
|
|
|
|
|
=head2 ZMQ_LINGER |
223
|
|
|
|
|
|
|
|
224
|
|
|
|
|
|
|
=head2 ZMQ_RECONNECT_IVL |
225
|
|
|
|
|
|
|
|
226
|
|
|
|
|
|
|
=head2 ZMQ_BACKLOG |
227
|
|
|
|
|
|
|
|
228
|
|
|
|
|
|
|
=head2 ZMQ_RECONNECT_IVL_MAX |
229
|
|
|
|
|
|
|
|
230
|
|
|
|
|
|
|
=head2 ZMQ_MAXMSGSIZE |
231
|
|
|
|
|
|
|
|
232
|
|
|
|
|
|
|
=head2 ZMQ_SNDHWM |
233
|
|
|
|
|
|
|
|
234
|
|
|
|
|
|
|
=head2 ZMQ_RCVHWM |
235
|
|
|
|
|
|
|
|
236
|
|
|
|
|
|
|
=head2 ZMQ_MULTICAST_HOPS |
237
|
|
|
|
|
|
|
|
238
|
|
|
|
|
|
|
=head2 ZMQ_RCVTIMEO |
239
|
|
|
|
|
|
|
|
240
|
|
|
|
|
|
|
=head2 ZMQ_SNDTIMEO |
241
|
|
|
|
|
|
|
|
242
|
|
|
|
|
|
|
=head2 ZMQ_LAST_ENDPOINT |
243
|
|
|
|
|
|
|
|
244
|
|
|
|
|
|
|
=head2 ZMQ_ROUTER_MANDATORY |
245
|
|
|
|
|
|
|
|
246
|
|
|
|
|
|
|
=head2 ZMQ_TCP_KEEPALIVE |
247
|
|
|
|
|
|
|
|
248
|
|
|
|
|
|
|
=head2 ZMQ_TCP_KEEPALIVE_CNT |
249
|
|
|
|
|
|
|
|
250
|
|
|
|
|
|
|
=head2 ZMQ_TCP_KEEPALIVE_IDLE |
251
|
|
|
|
|
|
|
|
252
|
|
|
|
|
|
|
=head2 ZMQ_TCP_KEEPALIVE_INTVL |
253
|
|
|
|
|
|
|
|
254
|
|
|
|
|
|
|
=head2 ZMQ_IMMEDIATE |
255
|
|
|
|
|
|
|
|
256
|
|
|
|
|
|
|
=head2 ZMQ_XPUB_VERBOSE |
257
|
|
|
|
|
|
|
|
258
|
|
|
|
|
|
|
=head2 ZMQ_ROUTER_RAW |
259
|
|
|
|
|
|
|
|
260
|
|
|
|
|
|
|
=head2 ZMQ_IPV6 |
261
|
|
|
|
|
|
|
|
262
|
|
|
|
|
|
|
=head2 ZMQ_MECHANISM |
263
|
|
|
|
|
|
|
|
264
|
|
|
|
|
|
|
=head2 ZMQ_PLAIN_SERVER |
265
|
|
|
|
|
|
|
|
266
|
|
|
|
|
|
|
=head2 ZMQ_PLAIN_USERNAME |
267
|
|
|
|
|
|
|
|
268
|
|
|
|
|
|
|
=head2 ZMQ_PLAIN_PASSWORD |
269
|
|
|
|
|
|
|
|
270
|
|
|
|
|
|
|
=head2 ZMQ_CURVE_SERVER |
271
|
|
|
|
|
|
|
|
272
|
|
|
|
|
|
|
=head2 ZMQ_CURVE_PUBLICKEY |
273
|
|
|
|
|
|
|
|
274
|
|
|
|
|
|
|
=head2 ZMQ_CURVE_SECRETKEY |
275
|
|
|
|
|
|
|
|
276
|
|
|
|
|
|
|
=head2 ZMQ_CURVE_SERVERKEY |
277
|
|
|
|
|
|
|
|
278
|
|
|
|
|
|
|
=head2 ZMQ_PROBE_ROUTER |
279
|
|
|
|
|
|
|
|
280
|
|
|
|
|
|
|
=head2 ZMQ_REQ_CORRELATE |
281
|
|
|
|
|
|
|
|
282
|
|
|
|
|
|
|
=head2 ZMQ_REQ_RELAXED |
283
|
|
|
|
|
|
|
|
284
|
|
|
|
|
|
|
=head2 ZMQ_CONFLATE |
285
|
|
|
|
|
|
|
|
286
|
|
|
|
|
|
|
=head2 ZMQ_ZAP_DOMAIN |
287
|
|
|
|
|
|
|
|
288
|
|
|
|
|
|
|
=head2 ZMQ_ROUTER_HANDOVER |
289
|
|
|
|
|
|
|
|
290
|
|
|
|
|
|
|
=head2 ZMQ_TOS |
291
|
|
|
|
|
|
|
|
292
|
|
|
|
|
|
|
=head2 ZMQ_CONNECT_RID |
293
|
|
|
|
|
|
|
|
294
|
|
|
|
|
|
|
=head2 ZMQ_GSSAPI_SERVER |
295
|
|
|
|
|
|
|
|
296
|
|
|
|
|
|
|
=head2 ZMQ_GSSAPI_PRINCIPAL |
297
|
|
|
|
|
|
|
|
298
|
|
|
|
|
|
|
=head2 ZMQ_GSSAPI_SERVICE_PRINCIPAL |
299
|
|
|
|
|
|
|
|
300
|
|
|
|
|
|
|
=head2 ZMQ_GSSAPI_PLAINTEXT |
301
|
|
|
|
|
|
|
|
302
|
|
|
|
|
|
|
=head2 ZMQ_HANDSHAKE_IVL |
303
|
|
|
|
|
|
|
|
304
|
|
|
|
|
|
|
=head2 ZMQ_SOCKS_PROXY |
305
|
|
|
|
|
|
|
|
306
|
|
|
|
|
|
|
=head2 ZMQ_XPUB_NODROP |
307
|
|
|
|
|
|
|
|
308
|
|
|
|
|
|
|
=head2 ZMQ_BLOCKY |
309
|
|
|
|
|
|
|
|
310
|
|
|
|
|
|
|
=head2 ZMQ_XPUB_MANUAL |
311
|
|
|
|
|
|
|
|
312
|
|
|
|
|
|
|
=head2 ZMQ_XPUB_WELCOME_MSG |
313
|
|
|
|
|
|
|
|
314
|
|
|
|
|
|
|
=head2 ZMQ_STREAM_NOTIFY |
315
|
|
|
|
|
|
|
|
316
|
|
|
|
|
|
|
=head2 ZMQ_INVERT_MATCHING |
317
|
|
|
|
|
|
|
|
318
|
|
|
|
|
|
|
=head2 ZMQ_HEARTBEAT_IVL |
319
|
|
|
|
|
|
|
|
320
|
|
|
|
|
|
|
=head2 ZMQ_HEARTBEAT_TTL |
321
|
|
|
|
|
|
|
|
322
|
|
|
|
|
|
|
=head2 ZMQ_HEARTBEAT_TIMEOUT |
323
|
|
|
|
|
|
|
|
324
|
|
|
|
|
|
|
=head2 ZMQ_XPUB_VERBOSER |
325
|
|
|
|
|
|
|
|
326
|
|
|
|
|
|
|
=head2 ZMQ_CONNECT_TIMEOUT |
327
|
|
|
|
|
|
|
|
328
|
|
|
|
|
|
|
=head2 ZMQ_TCP_MAXRT |
329
|
|
|
|
|
|
|
|
330
|
|
|
|
|
|
|
=head2 ZMQ_THREAD_SAFE |
331
|
|
|
|
|
|
|
|
332
|
|
|
|
|
|
|
=head2 ZMQ_MULTICAST_MAXTPDU |
333
|
|
|
|
|
|
|
|
334
|
|
|
|
|
|
|
=head2 ZMQ_VMCI_BUFFER_SIZE |
335
|
|
|
|
|
|
|
|
336
|
|
|
|
|
|
|
=head2 ZMQ_VMCI_BUFFER_MIN_SIZE |
337
|
|
|
|
|
|
|
|
338
|
|
|
|
|
|
|
=head2 ZMQ_VMCI_BUFFER_MAX_SIZE |
339
|
|
|
|
|
|
|
|
340
|
|
|
|
|
|
|
=head2 ZMQ_VMCI_CONNECT_TIMEOUT |
341
|
|
|
|
|
|
|
|
342
|
|
|
|
|
|
|
=head2 ZMQ_USE_FD |
343
|
|
|
|
|
|
|
|
344
|
|
|
|
|
|
|
=head1 AUTHOR |
345
|
|
|
|
|
|
|
|
346
|
|
|
|
|
|
|
Jacques Germishuys |
347
|
|
|
|
|
|
|
|
348
|
|
|
|
|
|
|
=head1 LICENSE AND COPYRIGHT |
349
|
|
|
|
|
|
|
|
350
|
|
|
|
|
|
|
Copyright 2017 Jacques Germishuys. |
351
|
|
|
|
|
|
|
|
352
|
|
|
|
|
|
|
This program is free software; you can redistribute it and/or modify it |
353
|
|
|
|
|
|
|
under the terms of either: the GNU General Public License as published |
354
|
|
|
|
|
|
|
by the Free Software Foundation; or the Artistic License. |
355
|
|
|
|
|
|
|
|
356
|
|
|
|
|
|
|
See http://dev.perl.org/licenses/ for more information. |
357
|
|
|
|
|
|
|
|
358
|
|
|
|
|
|
|
=cut |
359
|
|
|
|
|
|
|
|
360
|
|
|
|
|
|
|
1; # End of ZMQ::Raw::Socket |