czmq-ffi-gen 0.15.0 → 0.16.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/CHANGES.md +9 -0
- data/README.md +15 -26
- data/lib/czmq-ffi-gen.rb +4 -2
- data/lib/czmq-ffi-gen/czmq/ffi.rb +105 -5
- data/lib/czmq-ffi-gen/czmq/ffi/version.rb +1 -1
- data/lib/czmq-ffi-gen/czmq/ffi/zargs.rb +26 -24
- data/lib/czmq-ffi-gen/czmq/ffi/zchunk.rb +41 -0
- data/lib/czmq-ffi-gen/czmq/ffi/zconfig.rb +13 -0
- data/lib/czmq-ffi-gen/czmq/ffi/zfile.rb +1 -1
- data/lib/czmq-ffi-gen/czmq/ffi/zframe.rb +29 -0
- data/lib/czmq-ffi-gen/czmq/ffi/zhttp_client.rb +113 -0
- data/lib/czmq-ffi-gen/czmq/ffi/zhttp_request.rb +312 -0
- data/lib/czmq-ffi-gen/czmq/ffi/zhttp_response.rb +263 -0
- data/lib/czmq-ffi-gen/czmq/ffi/zhttp_server.rb +135 -0
- data/lib/czmq-ffi-gen/czmq/ffi/zhttp_server_connection.rb +91 -0
- data/lib/czmq-ffi-gen/czmq/ffi/zhttp_server_options.rb +161 -0
- data/lib/czmq-ffi-gen/czmq/ffi/zlistx.rb +34 -1
- data/lib/czmq-ffi-gen/czmq/ffi/zpoller.rb +11 -9
- data/lib/czmq-ffi-gen/czmq/ffi/zproc.rb +19 -5
- data/lib/czmq-ffi-gen/czmq/ffi/zsock.rb +461 -2
- data/lib/czmq-ffi-gen/czmq/ffi/zsys.rb +147 -1
- data/lib/czmq-ffi-gen/czmq_ffi_extensions.rb +16 -0
- data/lib/czmq-ffi-gen/gem_version.rb +1 -1
- data/lib/czmq-ffi-gen/libzmq.rb +29 -2
- data/lib/czmq-ffi-gen/versions.rb +1 -8
- metadata +22 -17
- data/lib/czmq-ffi-gen/legacy.rb +0 -16
@@ -188,7 +188,7 @@ module CZMQ
|
|
188
188
|
|
189
189
|
# Set default interrupt handler, so Ctrl-C or SIGTERM will set
|
190
190
|
# zsys_interrupted. Idempotent; safe to call multiple times.
|
191
|
-
# Can be
|
191
|
+
# Can be suppressed by ZSYS_SIGHANDLER=false
|
192
192
|
# *** This is for CZMQ internal use only and may change arbitrarily ***
|
193
193
|
#
|
194
194
|
# @return [void]
|
@@ -324,6 +324,22 @@ module CZMQ
|
|
324
324
|
result
|
325
325
|
end
|
326
326
|
|
327
|
+
# Format a string using printf formatting, returning a freshly allocated
|
328
|
+
# buffer. If there was insufficient memory, returns NULL. Free the returned
|
329
|
+
# string using zstr_free(). The hinted version allows to optimize by using
|
330
|
+
# a larger starting buffer size (known to/assumed by the developer) and so
|
331
|
+
# avoid reallocations.
|
332
|
+
#
|
333
|
+
# @param hint [Integer, #to_int, #to_i]
|
334
|
+
# @param format [String, #to_s, nil]
|
335
|
+
# @param args [Array<Object>] see https://github.com/ffi/ffi/wiki/examples#using-varargs
|
336
|
+
# @return [::FFI::Pointer]
|
337
|
+
def self.sprintf_hint(hint, format, *args)
|
338
|
+
hint = Integer(hint)
|
339
|
+
result = ::CZMQ::FFI.zsys_sprintf_hint(hint, format, *args)
|
340
|
+
result
|
341
|
+
end
|
342
|
+
|
327
343
|
# Format a string using printf formatting, returning a freshly allocated
|
328
344
|
# buffer. If there was insufficient memory, returns NULL. Free the returned
|
329
345
|
# string using zstr_free().
|
@@ -503,6 +519,52 @@ module CZMQ
|
|
503
519
|
result
|
504
520
|
end
|
505
521
|
|
522
|
+
# Configure the numeric prefix to each thread created for the internal
|
523
|
+
# context's thread pool. This option is only supported on Linux.
|
524
|
+
# If the environment variable ZSYS_THREAD_NAME_PREFIX is defined, that
|
525
|
+
# provides the default.
|
526
|
+
# Note that this method is valid only before any socket is created.
|
527
|
+
#
|
528
|
+
# @param prefix [Integer, #to_int, #to_i]
|
529
|
+
# @return [void]
|
530
|
+
def self.set_thread_name_prefix(prefix)
|
531
|
+
prefix = Integer(prefix)
|
532
|
+
result = ::CZMQ::FFI.zsys_set_thread_name_prefix(prefix)
|
533
|
+
result
|
534
|
+
end
|
535
|
+
|
536
|
+
# Return thread name prefix.
|
537
|
+
#
|
538
|
+
# @return [Integer]
|
539
|
+
def self.thread_name_prefix()
|
540
|
+
result = ::CZMQ::FFI.zsys_thread_name_prefix()
|
541
|
+
result
|
542
|
+
end
|
543
|
+
|
544
|
+
# Adds a specific CPU to the affinity list of the ZMQ context thread pool.
|
545
|
+
# This option is only supported on Linux.
|
546
|
+
# Note that this method is valid only before any socket is created.
|
547
|
+
#
|
548
|
+
# @param cpu [Integer, #to_int, #to_i]
|
549
|
+
# @return [void]
|
550
|
+
def self.thread_affinity_cpu_add(cpu)
|
551
|
+
cpu = Integer(cpu)
|
552
|
+
result = ::CZMQ::FFI.zsys_thread_affinity_cpu_add(cpu)
|
553
|
+
result
|
554
|
+
end
|
555
|
+
|
556
|
+
# Removes a specific CPU to the affinity list of the ZMQ context thread pool.
|
557
|
+
# This option is only supported on Linux.
|
558
|
+
# Note that this method is valid only before any socket is created.
|
559
|
+
#
|
560
|
+
# @param cpu [Integer, #to_int, #to_i]
|
561
|
+
# @return [void]
|
562
|
+
def self.thread_affinity_cpu_remove(cpu)
|
563
|
+
cpu = Integer(cpu)
|
564
|
+
result = ::CZMQ::FFI.zsys_thread_affinity_cpu_remove(cpu)
|
565
|
+
result
|
566
|
+
end
|
567
|
+
|
506
568
|
# Configure the number of sockets that ZeroMQ will allow. The default
|
507
569
|
# is 1024. The actual limit depends on the system, and you can query it
|
508
570
|
# by using zsys_socket_limit (). A value of zero means "maximum".
|
@@ -543,6 +605,26 @@ module CZMQ
|
|
543
605
|
result
|
544
606
|
end
|
545
607
|
|
608
|
+
# Configure whether to use zero copy strategy in libzmq. If the environment
|
609
|
+
# variable ZSYS_ZERO_COPY_RECV is defined, that provides the default.
|
610
|
+
# Otherwise the default is 1.
|
611
|
+
#
|
612
|
+
# @param zero_copy [Integer, #to_int, #to_i]
|
613
|
+
# @return [void]
|
614
|
+
def self.set_zero_copy_recv(zero_copy)
|
615
|
+
zero_copy = Integer(zero_copy)
|
616
|
+
result = ::CZMQ::FFI.zsys_set_zero_copy_recv(zero_copy)
|
617
|
+
result
|
618
|
+
end
|
619
|
+
|
620
|
+
# Return ZMQ_ZERO_COPY_RECV option.
|
621
|
+
#
|
622
|
+
# @return [Integer]
|
623
|
+
def self.zero_copy_recv()
|
624
|
+
result = ::CZMQ::FFI.zsys_zero_copy_recv()
|
625
|
+
result
|
626
|
+
end
|
627
|
+
|
546
628
|
# Configure the threshold value of filesystem object age per st_mtime
|
547
629
|
# that should elapse until we consider that object "stable" at the
|
548
630
|
# current zclock_time() moment.
|
@@ -739,6 +821,70 @@ module CZMQ
|
|
739
821
|
result
|
740
822
|
end
|
741
823
|
|
824
|
+
# Print formatted string. Format is specified by variable names
|
825
|
+
# in Python-like format style
|
826
|
+
#
|
827
|
+
# "%(KEY)s=%(VALUE)s", KEY=key, VALUE=value
|
828
|
+
# become
|
829
|
+
# "key=value"
|
830
|
+
#
|
831
|
+
# Returns freshly allocated string or NULL in a case of error.
|
832
|
+
# Not enough memory, invalid format specifier, name not in args
|
833
|
+
#
|
834
|
+
# @param format [String, #to_s, nil]
|
835
|
+
# @param args [Zhash, #__ptr]
|
836
|
+
# @return [::FFI::AutoPointer]
|
837
|
+
def self.zprintf(format, args)
|
838
|
+
args = args.__ptr if args
|
839
|
+
result = ::CZMQ::FFI.zsys_zprintf(format, args)
|
840
|
+
result = ::FFI::AutoPointer.new(result, LibC.method(:free))
|
841
|
+
result
|
842
|
+
end
|
843
|
+
|
844
|
+
# Return error string for given format/args combination.
|
845
|
+
#
|
846
|
+
# @param format [String, #to_s, nil]
|
847
|
+
# @param args [Zhash, #__ptr]
|
848
|
+
# @return [::FFI::AutoPointer]
|
849
|
+
def self.zprintf_error(format, args)
|
850
|
+
args = args.__ptr if args
|
851
|
+
result = ::CZMQ::FFI.zsys_zprintf_error(format, args)
|
852
|
+
result = ::FFI::AutoPointer.new(result, LibC.method(:free))
|
853
|
+
result
|
854
|
+
end
|
855
|
+
|
856
|
+
# Print formatted string. Format is specified by variable names
|
857
|
+
# in Python-like format style
|
858
|
+
#
|
859
|
+
# "%(KEY)s=%(VALUE)s", KEY=key, VALUE=value
|
860
|
+
# become
|
861
|
+
# "key=value"
|
862
|
+
#
|
863
|
+
# Returns freshly allocated string or NULL in a case of error.
|
864
|
+
# Not enough memory, invalid format specifier, name not in args
|
865
|
+
#
|
866
|
+
# @param format [String, #to_s, nil]
|
867
|
+
# @param args [Zconfig, #__ptr]
|
868
|
+
# @return [::FFI::AutoPointer]
|
869
|
+
def self.zplprintf(format, args)
|
870
|
+
args = args.__ptr if args
|
871
|
+
result = ::CZMQ::FFI.zsys_zplprintf(format, args)
|
872
|
+
result = ::FFI::AutoPointer.new(result, LibC.method(:free))
|
873
|
+
result
|
874
|
+
end
|
875
|
+
|
876
|
+
# Return error string for given format/args combination.
|
877
|
+
#
|
878
|
+
# @param format [String, #to_s, nil]
|
879
|
+
# @param args [Zconfig, #__ptr]
|
880
|
+
# @return [::FFI::AutoPointer]
|
881
|
+
def self.zplprintf_error(format, args)
|
882
|
+
args = args.__ptr if args
|
883
|
+
result = ::CZMQ::FFI.zsys_zplprintf_error(format, args)
|
884
|
+
result = ::FFI::AutoPointer.new(result, LibC.method(:free))
|
885
|
+
result
|
886
|
+
end
|
887
|
+
|
742
888
|
# Set log identity, which is a string that prefixes all log messages sent
|
743
889
|
# by this process. The log identity defaults to the environment variable
|
744
890
|
# ZSYS_LOGIDENT, if that is set.
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module CZMQ
|
2
|
+
module FFI
|
3
|
+
|
4
|
+
# @return [Boolean] whether the CZMQ DRAFT API is available
|
5
|
+
#
|
6
|
+
def self.has_draft?
|
7
|
+
# NOTE: We use some function that is currently declared DRAFT. Another one
|
8
|
+
# might be needed in future versions.
|
9
|
+
zsock_new_server(nil)
|
10
|
+
true
|
11
|
+
rescue NotImplementedError, NoMethodError
|
12
|
+
false
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
data/lib/czmq-ffi-gen/libzmq.rb
CHANGED
@@ -5,8 +5,7 @@ module CZMQ::FFI::LibZMQ
|
|
5
5
|
|
6
6
|
lib_name = 'libzmq'
|
7
7
|
lib_dirs = ['/usr/local/lib', '/opt/local/lib', '/usr/lib64']
|
8
|
-
|
9
|
-
lib_dirs = [*env_path.split(':'), *lib_dirs] if env_path
|
8
|
+
lib_dirs = [*ENV['LIBZMQ_PATH'].split(':'), *lib_dirs] if ENV['LIBZMQ_PATH']
|
10
9
|
lib_paths = lib_dirs.map { |path| "#{path}/#{lib_name}.#{::FFI::Platform::LIBSUFFIX}" }
|
11
10
|
ffi_lib lib_paths + [lib_name]
|
12
11
|
|
@@ -17,4 +16,32 @@ module CZMQ::FFI::LibZMQ
|
|
17
16
|
attach_function :zmq_strerror, [:int], :string, **opts
|
18
17
|
attach_function :zmq_errno, [], :int, **opts
|
19
18
|
attach_function :zmq_version, [:pointer, :pointer, :pointer], :void, **opts
|
19
|
+
attach_function :zmq_has, [:pointer], :int, **opts
|
20
|
+
|
21
|
+
|
22
|
+
# get ZMQ version
|
23
|
+
ptrs = Array.new(3) { ::FFI::MemoryPointer.new(:int) }
|
24
|
+
zmq_version(*ptrs)
|
25
|
+
VERSION = ptrs.map { |n| n.get_int(0) }.join(".").freeze
|
26
|
+
|
27
|
+
|
28
|
+
# @param capability [Symbol, String] the name of the capability
|
29
|
+
# @return [Boolean] whether the capability is supported
|
30
|
+
#
|
31
|
+
def self.has?(capability)
|
32
|
+
ptr = FFI::MemoryPointer.from_string(capability.to_s.downcase)
|
33
|
+
zmq_has(ptr) == 1
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
# @return [Boolean] whether the DRAFT API is supported
|
38
|
+
def self.has_draft?
|
39
|
+
has? :draft
|
40
|
+
end
|
41
|
+
|
42
|
+
|
43
|
+
# @return [Boolean] whether CURVE is supported
|
44
|
+
def self.has_curve?
|
45
|
+
has? :curve
|
46
|
+
end
|
20
47
|
end
|
@@ -1,6 +1,3 @@
|
|
1
|
-
require_relative "gem_version"
|
2
|
-
require_relative "libzmq"
|
3
|
-
|
4
1
|
module CZMQ
|
5
2
|
module FFI
|
6
3
|
# CZMQ library version
|
@@ -10,10 +7,6 @@ module CZMQ
|
|
10
7
|
LIBRARY_VERSION = CZMQ_VERSION
|
11
8
|
|
12
9
|
# ZMQ library version
|
13
|
-
ZMQ_VERSION =
|
14
|
-
version = Array.new(3) { ::FFI::MemoryPointer.new(:int) }
|
15
|
-
LibZMQ.zmq_version(*version)
|
16
|
-
version.map { |n| n.get_int(0) }.join(".")
|
17
|
-
end
|
10
|
+
ZMQ_VERSION = LibZMQ::VERSION
|
18
11
|
end
|
19
12
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: czmq-ffi-gen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.16.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Patrik Wenger
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-11-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ffi
|
@@ -16,56 +16,56 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.
|
19
|
+
version: '1.11'
|
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.
|
26
|
+
version: '1.11'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '2.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '2.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '3.9'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '3.9'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: minitest
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -110,6 +110,12 @@ files:
|
|
110
110
|
- lib/czmq-ffi-gen/czmq/ffi/zframe.rb
|
111
111
|
- lib/czmq-ffi-gen/czmq/ffi/zhash.rb
|
112
112
|
- lib/czmq-ffi-gen/czmq/ffi/zhashx.rb
|
113
|
+
- lib/czmq-ffi-gen/czmq/ffi/zhttp_client.rb
|
114
|
+
- lib/czmq-ffi-gen/czmq/ffi/zhttp_request.rb
|
115
|
+
- lib/czmq-ffi-gen/czmq/ffi/zhttp_response.rb
|
116
|
+
- lib/czmq-ffi-gen/czmq/ffi/zhttp_server.rb
|
117
|
+
- lib/czmq-ffi-gen/czmq/ffi/zhttp_server_connection.rb
|
118
|
+
- lib/czmq-ffi-gen/czmq/ffi/zhttp_server_options.rb
|
113
119
|
- lib/czmq-ffi-gen/czmq/ffi/ziflist.rb
|
114
120
|
- lib/czmq-ffi-gen/czmq/ffi/zlist.rb
|
115
121
|
- lib/czmq-ffi-gen/czmq/ffi/zlistx.rb
|
@@ -123,9 +129,9 @@ files:
|
|
123
129
|
- lib/czmq-ffi-gen/czmq/ffi/ztimerset.rb
|
124
130
|
- lib/czmq-ffi-gen/czmq/ffi/ztrie.rb
|
125
131
|
- lib/czmq-ffi-gen/czmq/ffi/zuuid.rb
|
132
|
+
- lib/czmq-ffi-gen/czmq_ffi_extensions.rb
|
126
133
|
- lib/czmq-ffi-gen/errors.rb
|
127
134
|
- lib/czmq-ffi-gen/gem_version.rb
|
128
|
-
- lib/czmq-ffi-gen/legacy.rb
|
129
135
|
- lib/czmq-ffi-gen/libzmq.rb
|
130
136
|
- lib/czmq-ffi-gen/signals.rb
|
131
137
|
- lib/czmq-ffi-gen/vendor.rb
|
@@ -149,8 +155,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
149
155
|
- !ruby/object:Gem::Version
|
150
156
|
version: '0'
|
151
157
|
requirements: []
|
152
|
-
|
153
|
-
rubygems_version: 2.6.8
|
158
|
+
rubygems_version: 3.0.3
|
154
159
|
signing_key:
|
155
160
|
specification_version: 4
|
156
161
|
summary: The low-level Ruby binding for CZMQ (generated using zproject)
|
data/lib/czmq-ffi-gen/legacy.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
module CZMQ::FFI
|
2
|
-
if available?
|
3
|
-
opts = {
|
4
|
-
blocking: true # only necessary on MRI to deal with the GIL.
|
5
|
-
}
|
6
|
-
|
7
|
-
##
|
8
|
-
# NOTE: this is to support the current stable release, CZMQ 3.0.2
|
9
|
-
#
|
10
|
-
# attach zsys_has_curve (as zproc_has_curve), if zproc_has_curve isn't
|
11
|
-
# available
|
12
|
-
unless methods.include? :zproc_has_curve
|
13
|
-
attach_function :zproc_has_curve, :zsys_has_curve, [], :bool, **opts
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|