cztop 1.0.0 → 1.1.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/coverage.yml +20 -0
  3. data/.github/workflows/draft_api.yml +27 -0
  4. data/.github/workflows/{main.yml → stable_api.yml} +6 -6
  5. data/.rubocop.yml +175 -0
  6. data/CHANGES.md +8 -1
  7. data/Gemfile +5 -0
  8. data/README.md +3 -1
  9. data/ci/install-libczmq +22 -0
  10. data/ci/install-libzmq +22 -0
  11. data/cztop.gemspec +3 -2
  12. data/lib/cztop/actor.rb +55 -26
  13. data/lib/cztop/authenticator.rb +18 -9
  14. data/lib/cztop/beacon.rb +22 -10
  15. data/lib/cztop/cert_store.rb +8 -2
  16. data/lib/cztop/certificate.rb +47 -18
  17. data/lib/cztop/config/comments.rb +14 -3
  18. data/lib/cztop/config/serialization.rb +25 -5
  19. data/lib/cztop/config/traversing.rb +44 -13
  20. data/lib/cztop/config.rb +23 -9
  21. data/lib/cztop/frame.rb +23 -10
  22. data/lib/cztop/has_ffi_delegate.rb +11 -1
  23. data/lib/cztop/message/frames.rb +16 -2
  24. data/lib/cztop/message.rb +36 -22
  25. data/lib/cztop/metadata.rb +35 -24
  26. data/lib/cztop/monitor.rb +14 -5
  27. data/lib/cztop/poller/aggregated.rb +31 -15
  28. data/lib/cztop/poller/zmq.rb +25 -22
  29. data/lib/cztop/poller/zpoller.rb +18 -6
  30. data/lib/cztop/poller.rb +43 -18
  31. data/lib/cztop/polymorphic_zsock_methods.rb +6 -1
  32. data/lib/cztop/proxy.rb +34 -19
  33. data/lib/cztop/send_receive_methods.rb +5 -1
  34. data/lib/cztop/socket/types.rb +128 -22
  35. data/lib/cztop/socket.rb +23 -18
  36. data/lib/cztop/version.rb +5 -1
  37. data/lib/cztop/z85/padded.rb +12 -3
  38. data/lib/cztop/z85/pipe.rb +40 -17
  39. data/lib/cztop/z85.rb +17 -6
  40. data/lib/cztop/zap.rb +57 -32
  41. data/lib/cztop/zsock_options.rb +155 -122
  42. data/lib/cztop.rb +2 -1
  43. metadata +28 -10
  44. data/.ruby-version +0 -1
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module CZTop
2
4
  # This module adds the ability to access options of a {Socket} or an
3
5
  # {Actor}.
@@ -9,26 +11,30 @@ module CZTop
9
11
  # @see http://api.zeromq.org/czmq3-0:zsock-option
10
12
  #
11
13
  module ZsockOptions
14
+
12
15
  # Access to the options of this socket.
13
16
  # @return [OptionsAccessor] the memoized options accessor
14
17
  def options
15
18
  @options ||= OptionsAccessor.new(self)
16
19
  end
17
20
 
21
+
18
22
  # Checks whether there's a message that can be read from the socket
19
23
  # without blocking.
20
24
  # @return [Boolean] whether the socket is readable
21
25
  def readable?
22
- (options.events & Poller::ZMQ::POLLIN) > 0
26
+ (options.events & Poller::ZMQ::POLLIN).positive?
23
27
  end
24
28
 
29
+
25
30
  # Checks whether at least one message can be written to the socket without
26
31
  # blocking.
27
32
  # @return [Boolean] whether the socket is writable
28
33
  def writable?
29
- (options.events & Poller::ZMQ::POLLOUT) > 0
34
+ (options.events & Poller::ZMQ::POLLOUT).positive?
30
35
  end
31
36
 
37
+
32
38
  # Useful for registration in an event-loop.
33
39
  # @return [Integer]
34
40
  # @see OptionsAccessor#fd
@@ -36,8 +42,10 @@ module CZTop
36
42
  options.fd
37
43
  end
38
44
 
45
+
39
46
  # Used to access the options of a {Socket} or {Actor}.
40
47
  class OptionsAccessor
48
+
41
49
  # @return [Socket, Actor] whose options this {OptionsAccessor} instance
42
50
  # is accessing
43
51
  attr_reader :zocket
@@ -47,18 +55,21 @@ module CZTop
47
55
  @zocket = zocket
48
56
  end
49
57
 
58
+
50
59
  # Fuzzy option getter. This is to make it easier when porting
51
60
  # applications from CZMQ libraries to CZTop.
52
61
  # @param option_name [Symbol, String] case insensitive option name
53
62
  # @raise [NoMethodError] if option name can't be recognized
54
63
  def [](option_name)
55
64
  # NOTE: beware of predicates, especially #CURVE_server? & friends
56
- meth = public_methods.reject { |m| m =~ /=$/ }
57
- .find { |m| m =~ /^#{option_name}\??$/i }
65
+ meth = public_methods.grep_v(/=$/)
66
+ .find { |m| m =~ /^#{option_name}\??$/i }
58
67
  raise NoMethodError, option_name if meth.nil?
68
+
59
69
  __send__(meth)
60
70
  end
61
71
 
72
+
62
73
  # Fuzzy option setter. This is to make it easier when porting
63
74
  # applications from CZMQ libraries to CZTop.
64
75
  # @param option_name [Symbol, String] case insensitive option name
@@ -67,6 +78,7 @@ module CZTop
67
78
  def []=(option_name, new_value)
68
79
  meth = public_methods.find { |m| m =~ /^#{option_name}=$/i }
69
80
  raise NoMethodError, option_name if meth.nil?
81
+
70
82
  __send__(meth, new_value)
71
83
  end
72
84
 
@@ -75,20 +87,37 @@ module CZTop
75
87
  # @!group High Water Marks
76
88
 
77
89
  # @return [Integer] the send high water mark
78
- def sndhwm() Zsock.sndhwm(@zocket) end
90
+ def sndhwm
91
+ Zsock.sndhwm(@zocket)
92
+ end
93
+
94
+
79
95
  # @param value [Integer] the new send high water mark.
80
- def sndhwm=(value) Zsock.set_sndhwm(@zocket, value) end
96
+ def sndhwm=(value)
97
+ Zsock.set_sndhwm(@zocket, value)
98
+ end
99
+
100
+
81
101
  # @return [Integer] the receive high water mark
82
- def rcvhwm() Zsock.rcvhwm(@zocket) end
102
+ def rcvhwm
103
+ Zsock.rcvhwm(@zocket)
104
+ end
105
+
106
+
83
107
  # @param value [Integer] the new receive high water mark
84
- def rcvhwm=(value) Zsock.set_rcvhwm(@zocket, value) end
108
+ def rcvhwm=(value)
109
+ Zsock.set_rcvhwm(@zocket, value)
110
+ end
85
111
 
86
112
  # @!endgroup
87
113
 
88
114
  # @!group Security Mechanisms
89
115
 
90
116
  # @return [Boolean] whether this zocket is a CURVE server
91
- def CURVE_server?() Zsock.curve_server(@zocket) > 0 end
117
+ def CURVE_server?
118
+ Zsock.curve_server(@zocket).positive?
119
+ end
120
+
92
121
 
93
122
  # Make this zocket a CURVE server.
94
123
  # @param bool [Boolean]
@@ -97,6 +126,7 @@ module CZTop
97
126
  Zsock.set_curve_server(@zocket, bool ? 1 : 0)
98
127
  end
99
128
 
129
+
100
130
  # @return [String] Z85 encoded server key set
101
131
  # @return [nil] if the current mechanism isn't CURVE or CURVE isn't
102
132
  # supported
@@ -104,13 +134,16 @@ module CZTop
104
134
  CURVE_key(:curve_serverkey)
105
135
  end
106
136
 
137
+
107
138
  # Get one of the CURVE keys.
108
139
  # @param key_name [Symbol] something like +:curve_serverkey+
109
140
  # @return [String, nil] key, if CURVE is supported and active, or nil
110
141
  def CURVE_key(key_name)
111
142
  return nil if mechanism != :CURVE
143
+
112
144
  ptr = Zsock.__send__(key_name, @zocket)
113
145
  return nil if ptr.null?
146
+
114
147
  ptr.read_string
115
148
  end
116
149
  private :CURVE_key
@@ -127,7 +160,7 @@ module CZTop
127
160
  ptr = ::FFI::MemoryPointer.from_string(key)
128
161
  Zsock.set_curve_serverkey_bin(@zocket, ptr)
129
162
  else
130
- raise ArgumentError, "invalid server key: %p" % key
163
+ raise ArgumentError, format('invalid server key: %p', key)
131
164
  end
132
165
  end
133
166
 
@@ -137,18 +170,19 @@ module CZTop
137
170
  1 => :PLAIN, # ZMQ_PLAIN
138
171
  2 => :CURVE, # ZMQ_CURVE
139
172
  3 => :GSSAPI # ZMQ_GSSAPI
140
- }
173
+ }.freeze
141
174
 
142
175
  # @return [Symbol] the current security mechanism in use
143
176
  # @note This is automatically set through the use of CURVE certificates,
144
177
  # etc
145
178
  def mechanism
146
- #int zsock_mechanism (void *self);
179
+ # int zsock_mechanism (void *self);
147
180
  code = Zsock.mechanism(@zocket)
148
181
  MECHANISMS[code] or
149
- raise "unknown ZMQ security mechanism code: %i" % code
182
+ raise format('unknown ZMQ security mechanism code: %i', code)
150
183
  end
151
184
 
185
+
152
186
  # @return [String] Z85 encoded secret key set
153
187
  # @return [nil] if the current mechanism isn't CURVE or CURVE isn't
154
188
  # supported
@@ -156,6 +190,7 @@ module CZTop
156
190
  CURVE_key(:curve_secretkey)
157
191
  end
158
192
 
193
+
159
194
  # @return [String] Z85 encoded public key set
160
195
  # @return [nil] if the current mechanism isn't CURVE or CURVE isn't
161
196
  # supported
@@ -163,21 +198,29 @@ module CZTop
163
198
  CURVE_key(:curve_publickey)
164
199
  end
165
200
 
201
+
166
202
  # Gets the ZAP domain used for authentication.
167
203
  # @see http://rfc.zeromq.org/spec:27
168
204
  # @return [String]
169
205
  def zap_domain
170
206
  Zsock.zap_domain(@zocket).read_string
171
207
  end
208
+
209
+
172
210
  # Sets the ZAP domain used for authentication.
173
211
  # @param domain [String] the new ZAP domain
174
212
  def zap_domain=(domain)
175
- raise ArgumentError, "domain too long" if domain.bytesize > 254
213
+ raise ArgumentError, 'domain too long' if domain.bytesize > 254
214
+
176
215
  Zsock.set_zap_domain(@zocket, domain)
177
216
  end
178
217
 
218
+
179
219
  # @return [Boolean] whether this zocket is a PLAIN server
180
- def PLAIN_server?() Zsock.plain_server(@zocket) > 0 end
220
+ def PLAIN_server?
221
+ Zsock.plain_server(@zocket).positive?
222
+ end
223
+
181
224
 
182
225
  # Make this zocket a PLAIN server.
183
226
  # @param bool [Boolean]
@@ -186,23 +229,32 @@ module CZTop
186
229
  Zsock.set_plain_server(@zocket, bool ? 1 : 0)
187
230
  end
188
231
 
232
+
189
233
  # @return [String] username set for PLAIN mechanism
190
234
  # @return [nil] if the current mechanism isn't PLAIN
191
235
  def PLAIN_username
192
236
  return nil if mechanism != :PLAIN
237
+
193
238
  Zsock.plain_username(@zocket).read_string
194
239
  end
240
+
241
+
195
242
  # @param username [String] username for PLAIN mechanism
196
243
  # @note You'll have to use a {CZTop::Authenticator}.
197
244
  def PLAIN_username=(username)
198
245
  Zsock.set_plain_username(@zocket, username)
199
246
  end
247
+
248
+
200
249
  # @return [String] password set for PLAIN mechanism
201
250
  # @return [nil] if the current mechanism isn't PLAIN
202
251
  def PLAIN_password
203
252
  return nil if mechanism != :PLAIN
253
+
204
254
  Zsock.plain_password(@zocket).read_string
205
255
  end
256
+
257
+
206
258
  # @param password [String] password for PLAIN mechanism
207
259
  def PLAIN_password=(password)
208
260
  Zsock.set_plain_password(@zocket, password)
@@ -214,17 +266,30 @@ module CZTop
214
266
 
215
267
  # @return [Integer] the timeout when receiving a message
216
268
  # @see Message.receive_from
217
- def rcvtimeo() Zsock.rcvtimeo(@zocket) end
269
+ def rcvtimeo
270
+ Zsock.rcvtimeo(@zocket)
271
+ end
272
+
273
+
218
274
  # @param timeout [Integer] new timeout
219
275
  # @see Message.receive_from
220
- def rcvtimeo=(timeout) Zsock.set_rcvtimeo(@zocket, timeout) end
276
+ def rcvtimeo=(timeout)
277
+ Zsock.set_rcvtimeo(@zocket, timeout)
278
+ end
279
+
221
280
 
222
281
  # @return [Integer] the timeout when sending a message
223
282
  # @see Message#send_to
224
- def sndtimeo() Zsock.sndtimeo(@zocket) end
283
+ def sndtimeo
284
+ Zsock.sndtimeo(@zocket)
285
+ end
286
+
287
+
225
288
  # @param timeout [Integer] new timeout
226
289
  # @see Message#send_to
227
- def sndtimeo=(timeout) Zsock.set_sndtimeo(@zocket, timeout) end
290
+ def sndtimeo=(timeout)
291
+ Zsock.set_sndtimeo(@zocket, timeout)
292
+ end
228
293
 
229
294
  # @!endgroup
230
295
 
@@ -235,59 +300,90 @@ module CZTop
235
300
  Zsock.set_router_mandatory(@zocket, bool ? 1 : 0)
236
301
  end
237
302
 
303
+
238
304
  # @return [String] current socket identity
239
- def identity() Zsock.identity(@zocket).read_string end
305
+ def identity
306
+ Zsock.identity(@zocket).read_string
307
+ end
308
+
309
+
240
310
  # @param identity [String] new socket identity
241
311
  # @raise [ArgumentError] if identity is invalid
242
312
  def identity=(identity)
243
- raise ArgumentError, "zero-length identity" if identity.bytesize.zero?
244
- raise ArgumentError, "identity too long" if identity.bytesize > 255
245
- raise ArgumentError, "invalid identity" if identity.start_with? "\0"
313
+ raise ArgumentError, 'zero-length identity' if identity.bytesize.zero?
314
+ raise ArgumentError, 'identity too long' if identity.bytesize > 255
315
+ raise ArgumentError, 'invalid identity' if identity.start_with? "\0"
316
+
246
317
  Zsock.set_identity(@zocket, identity)
247
318
  end
248
319
 
320
+
249
321
  # @return [Integer] current value of Type of Service
250
- def tos() Zsock.tos(@zocket) end
322
+ def tos
323
+ Zsock.tos(@zocket)
324
+ end
325
+
326
+
251
327
  # @param new_value [Integer] new value for Type of Service
252
328
  def tos=(new_value)
253
- raise ArgumentError, "invalid TOS" unless new_value >= 0
329
+ raise ArgumentError, 'invalid TOS' unless new_value >= 0
330
+
254
331
  Zsock.set_tos(@zocket, new_value)
255
332
  end
256
333
 
334
+
257
335
  # @return [Integer] current value of Heartbeat IVL
258
- def heartbeat_ivl() Zsock.heartbeat_ivl(@zocket) end
336
+ def heartbeat_ivl
337
+ Zsock.heartbeat_ivl(@zocket)
338
+ end
339
+
340
+
259
341
  # @param new_value [Integer] new value for Heartbeat IVL
260
342
  def heartbeat_ivl=(new_value)
261
- raise ArgumentError, "invalid IVL" unless new_value >= 0
343
+ raise ArgumentError, 'invalid IVL' unless new_value >= 0
344
+
262
345
  Zsock.set_heartbeat_ivl(@zocket, new_value)
263
346
  end
264
347
 
348
+
265
349
  # @return [Integer] current value of Heartbeat TTL, in milliseconds
266
- def heartbeat_ttl() Zsock.heartbeat_ttl(@zocket) end
350
+ def heartbeat_ttl
351
+ Zsock.heartbeat_ttl(@zocket)
352
+ end
353
+
354
+
267
355
  # @param new_value [Integer] new value for Heartbeat TTL, in
268
356
  # milliseconds
269
357
  # @note The value will internally be rounded to the nearest decisecond.
270
358
  # So a value of less than 100 will have no effect.
271
359
  def heartbeat_ttl=(new_value)
272
- unless new_value.is_a? Integer
273
- raise ArgumentError, "invalid TTL: #{new_value}"
274
- end
275
- unless (0..65536).include? new_value
276
- raise ArgumentError, "TTL out of range: #{new_value}"
277
- end
360
+ raise ArgumentError, "invalid TTL: #{new_value}" unless new_value.is_a? Integer
361
+ raise ArgumentError, "TTL out of range: #{new_value}" unless (0..65_536).include? new_value
362
+
278
363
  Zsock.set_heartbeat_ttl(@zocket, new_value)
279
364
  end
280
365
 
366
+
281
367
  # @return [Integer] current value of Heartbeat Timeout
282
- def heartbeat_timeout() Zsock.heartbeat_timeout(@zocket) end
368
+ def heartbeat_timeout
369
+ Zsock.heartbeat_timeout(@zocket)
370
+ end
371
+
372
+
283
373
  # @param new_value [Integer] new value for Heartbeat Timeout
284
374
  def heartbeat_timeout=(new_value)
285
- raise ArgumentError, "invalid timeout" unless new_value >= 0
375
+ raise ArgumentError, 'invalid timeout' unless new_value >= 0
376
+
286
377
  Zsock.set_heartbeat_timeout(@zocket, new_value)
287
378
  end
288
379
 
380
+
289
381
  # @return [Integer] current value of LINGER
290
- def linger() Zsock.linger(@zocket) end
382
+ def linger
383
+ Zsock.linger(@zocket)
384
+ end
385
+
386
+
291
387
  # This defines the number of milliseconds to wait while
292
388
  # closing/disconnecting a socket if there are outstanding messages to
293
389
  # send.
@@ -300,11 +396,16 @@ module CZTop
300
396
  Zsock.set_linger(@zocket, new_value)
301
397
  end
302
398
 
399
+
303
400
  # @return [Boolean] current value of ipv6
304
- def ipv6?() Zsock.ipv6(@zocket) != 0 end
401
+ def ipv6?
402
+ Zsock.ipv6(@zocket) != 0
403
+ end
404
+
405
+
305
406
  # Set the IPv6 option for the socket. A value of true means IPv6 is
306
407
  # enabled on the socket, while false means the socket will use only
307
- # IPv4. When IPv6 is enabled the socket will connect to, or accept
408
+ # IPv4. When IPv6 is enabled the socket will connect to, or accept
308
409
  # connections from, both IPv4 and IPv6 hosts.
309
410
  # Default is false.
310
411
  # @param new_value [Boolean] new value for ipv6
@@ -312,15 +413,26 @@ module CZTop
312
413
  Zsock.set_ipv6(@zocket, new_value ? 1 : 0)
313
414
  end
314
415
 
416
+
315
417
  # @return [Integer] socket file descriptor
316
- def fd() Zsock.fd(@zocket) end
418
+ def fd
419
+ Zsock.fd(@zocket)
420
+ end
421
+
317
422
 
318
423
  # @return [Integer] socket events (readable/writable)
319
424
  # @see CZTop::Poller::ZMQ::POLLIN and CZTop::Poller::ZMQ::POLLOUT
320
- def events() Zsock.events(@zocket) end
425
+ def events
426
+ Zsock.events(@zocket)
427
+ end
428
+
321
429
 
322
430
  # @return [Integer] current value of RECONNECT_IVL
323
- def reconnect_ivl() Zsock.reconnect_ivl(@zocket) end
431
+ def reconnect_ivl
432
+ Zsock.reconnect_ivl(@zocket)
433
+ end
434
+
435
+
324
436
  # This defines the number of milliseconds to wait while
325
437
  # closing/disconnecting a socket if there are outstanding messages to
326
438
  # send.
@@ -333,86 +445,7 @@ module CZTop
333
445
  Zsock.set_reconnect_ivl(@zocket, new_value)
334
446
  end
335
447
 
336
- # TODO: a reasonable subset of these
337
- #// Get socket options
338
- #int zsock_gssapi_server (void *self);
339
- #int zsock_gssapi_plaintext (void *self);
340
- #char * zsock_gssapi_principal (void *self);
341
- #char * zsock_gssapi_service_principal (void *self);
342
- #int zsock_immediate (void *self);
343
- #int zsock_type (void *self);
344
- #int zsock_affinity (void *self);
345
- #int zsock_rate (void *self);
346
- #int zsock_recovery_ivl (void *self);
347
- #int zsock_sndbuf (void *self);
348
- #int zsock_rcvbuf (void *self);
349
- #int zsock_reconnect_ivl_max (void *self);
350
- #int zsock_backlog (void *self);
351
- #int zsock_maxmsgsize (void *self);
352
- #int zsock_multicast_hops (void *self);
353
- #int zsock_tcp_keepalive (void *self);
354
- #int zsock_tcp_keepalive_idle (void *self);
355
- #int zsock_tcp_keepalive_cnt (void *self);
356
- #int zsock_tcp_keepalive_intvl (void *self);
357
- #int zsock_rcvmore (void *self);
358
- #char * zsock_last_endpoint (void *self);
359
- #attach_function :zsock_connect_timeout, [:pointer], :int, **opts
360
- #attach_function :zsock_handshake_ivl, [:pointer], :int, **opts
361
- #attach_function :zsock_invert_matching, [:pointer], :int, **opts
362
- #attach_function :zsock_multicast_maxtpdu, [:pointer], :int, **opts
363
- #attach_function :zsock_socks_proxy, [:pointer], :pointer, **opts
364
- #attach_function :zsock_tcp_maxrt, [:pointer], :int, **opts
365
- #attach_function :zsock_thread_safe, [:pointer], :int, **opts
366
- #attach_function :zsock_use_fd, [:pointer], :int, **opts
367
- #attach_function :zsock_vmci_buffer_max_size, [:pointer], :int, **opts
368
- #attach_function :zsock_vmci_buffer_min_size, [:pointer], :int, **opts
369
- #attach_function :zsock_vmci_buffer_size, [:pointer], :int, **opts
370
- #attach_function :zsock_vmci_connect_timeout, [:pointer], :int, **opts
371
- #
372
- #// Set socket options
373
- #void zsock_set_router_handover (void *self, int router_handover);
374
- #void zsock_set_probe_router (void *self, int probe_router);
375
- #void zsock_set_req_relaxed (void *self, int req_relaxed);
376
- #void zsock_set_req_correlate (void *self, int req_correlate);
377
- #void zsock_set_conflate (void *self, int conflate);
378
- #void zsock_set_gssapi_server (void *self, int gssapi_server);
379
- #void zsock_set_gssapi_plaintext (void *self, int gssapi_plaintext);
380
- #void zsock_set_gssapi_principal (void *self, const char * gssapi_principal);
381
- #void zsock_set_gssapi_service_principal (void *self, const char * gssapi_service_principal);
382
- #void zsock_set_immediate (void *self, int immediate);
383
- #void zsock_set_delay_attach_on_connect (void *self, int delay_attach_on_connect);
384
- #void zsock_set_affinity (void *self, int affinity);
385
- #void zsock_set_rate (void *self, int rate);
386
- #void zsock_set_recovery_ivl (void *self, int recovery_ivl);
387
- #void zsock_set_sndbuf (void *self, int sndbuf);
388
- #void zsock_set_rcvbuf (void *self, int rcvbuf);
389
- #void zsock_set_reconnect_ivl_max (void *self, int reconnect_ivl_max);
390
- #void zsock_set_backlog (void *self, int backlog);
391
- #void zsock_set_maxmsgsize (void *self, int maxmsgsize);
392
- #void zsock_set_multicast_hops (void *self, int multicast_hops);
393
- #void zsock_set_xpub_verbose (void *self, int xpub_verbose);
394
- #void zsock_set_tcp_keepalive (void *self, int tcp_keepalive);
395
- #void zsock_set_tcp_keepalive_idle (void *self, int tcp_keepalive_idle);
396
- #void zsock_set_tcp_keepalive_cnt (void *self, int tcp_keepalive_cnt);
397
- #void zsock_set_tcp_keepalive_intvl (void *self, int tcp_keepalive_intvl);
398
- #attach_function :zsock_set_connect_rid, [:pointer, :string], :void, **opts
399
- #attach_function :zsock_set_connect_rid_bin, [:pointer, :pointer], :void, **opts
400
- #attach_function :zsock_set_connect_timeout, [:pointer, :int], :void, **opts
401
- #attach_function :zsock_set_handshake_ivl, [:pointer, :int], :void, **opts
402
- #attach_function :zsock_set_invert_matching, [:pointer, :int], :void, **opts
403
- #attach_function :zsock_set_multicast_maxtpdu, [:pointer, :int], :void, **opts
404
- #attach_function :zsock_set_socks_proxy, [:pointer, :string], :void, **opts
405
- #attach_function :zsock_set_stream_notify, [:pointer, :int], :void, **opts
406
- #attach_function :zsock_set_tcp_maxrt, [:pointer, :int], :void, **opts
407
- #attach_function :zsock_set_use_fd, [:pointer, :int], :void, **opts
408
- #attach_function :zsock_set_vmci_buffer_max_size, [:pointer, :int], :void, **opts
409
- #attach_function :zsock_set_vmci_buffer_min_size, [:pointer, :int], :void, **opts
410
- #attach_function :zsock_set_vmci_buffer_size, [:pointer, :int], :void, **opts
411
- #attach_function :zsock_set_vmci_connect_timeout, [:pointer, :int], :void, **opts
412
- #attach_function :zsock_set_xpub_manual, [:pointer, :int], :void, **opts
413
- #attach_function :zsock_set_xpub_nodrop, [:pointer, :int], :void, **opts
414
- #attach_function :zsock_set_xpub_verboser, [:pointer, :int], :void, **opts
415
- #attach_function :zsock_set_xpub_welcome_msg, [:pointer, :string], :void, **opts
416
448
  end
449
+
417
450
  end
418
451
  end
data/lib/cztop.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'czmq-ffi-gen'
2
4
  require_relative 'cztop/version'
3
5
 
@@ -40,7 +42,6 @@ require_relative 'cztop/z85/padded'
40
42
  require_relative 'cztop/z85/pipe'
41
43
  require_relative 'cztop/zap'
42
44
 
43
-
44
45
  # make Ctrl-C work in case a low-level call hangs
45
46
  CZMQ::FFI::Signals.disable_default_handling
46
47
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cztop
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0.pre1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrik Wenger
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-01-08 00:00:00.000000000 Z
11
+ date: 2022-10-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: czmq-ffi-gen
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.0'
19
+ version: 1.1.0.pre1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.0'
26
+ version: 1.1.0.pre1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +122,20 @@ dependencies:
122
122
  - - ">="
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rubocop
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: 1.36.0
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: 1.36.0
125
139
  description:
126
140
  email:
127
141
  - paddor@gmail.com
@@ -131,10 +145,12 @@ executables:
131
145
  extensions: []
132
146
  extra_rdoc_files: []
133
147
  files:
134
- - ".github/workflows/main.yml"
148
+ - ".github/workflows/coverage.yml"
149
+ - ".github/workflows/draft_api.yml"
150
+ - ".github/workflows/stable_api.yml"
135
151
  - ".gitignore"
136
152
  - ".rspec"
137
- - ".ruby-version"
153
+ - ".rubocop.yml"
138
154
  - ".yardopts"
139
155
  - AUTHORS
140
156
  - CHANGES.md
@@ -144,6 +160,8 @@ files:
144
160
  - Rakefile
145
161
  - bin/console
146
162
  - bin/setup
163
+ - ci/install-libczmq
164
+ - ci/install-libzmq
147
165
  - cztop.gemspec
148
166
  - examples/ruby_actor/actor.rb
149
167
  - examples/simple_req_rep/rep.rb
@@ -212,14 +230,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
212
230
  requirements:
213
231
  - - ">="
214
232
  - !ruby/object:Gem::Version
215
- version: 2.5.0
233
+ version: 2.7.0
216
234
  required_rubygems_version: !ruby/object:Gem::Requirement
217
235
  requirements:
218
- - - ">="
236
+ - - ">"
219
237
  - !ruby/object:Gem::Version
220
- version: '0'
238
+ version: 1.3.1
221
239
  requirements: []
222
- rubygems_version: 3.2.4
240
+ rubygems_version: 3.2.33
223
241
  signing_key:
224
242
  specification_version: 4
225
243
  summary: CZMQ Ruby binding based on the generated low-level FFI bindings of CZMQ
data/.ruby-version DELETED
@@ -1 +0,0 @@
1
- 3.0