czmq-ffi-gen 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ba0ee8a4aee41a7656ec7a4891bd952a3942945a
4
- data.tar.gz: 5d21b7bb354da3c19f1eb7323df14cbf1ba2a172
3
+ metadata.gz: 4753723af1305df12590a3f43a5cedc724d3d8af
4
+ data.tar.gz: 502e1643c0f83b02f414e4211bba56b91cef9817
5
5
  SHA512:
6
- metadata.gz: f38147470bf967d450ee9f72626cf3cf6776922d45e32ea2467e24ce7b2fa93ed2e220636871ec815c75a3f7fca79b92e692119503c7796b378dd7e4d43a09fb
7
- data.tar.gz: 294f60d99f21caaecd594f4e615de343c45198c0654a388abe42a5779ab14bb50ebce0a96c4f73c75a4988cd139c5e0d2ccac8ccad20ad95c391e0697d81fa64
6
+ metadata.gz: a309f48d12a153ab625476d187e635df2ec9e592da1442a4928557e329bb7e2be7123f58976926fb6f1a9b1b5023c5a690455e59873a2ee99591450cf7babf04
7
+ data.tar.gz: 969c75a924e8bf90f0b66de5f5cb3faad2d050a6e7e5d1e142cf371796bdb62771ca3a139529ce93bb7b6441b4233de8fe495faa6323032e41197a9a679d45e7
data/CHANGES.md CHANGED
@@ -1,3 +1,9 @@
1
+ 0.4.0 (12/26/2015)
2
+ -----
3
+ * upgrade CZMQ low-level binding to
4
+ - add Zproc.has_curve
5
+ * add basic specs for Zproc
6
+
1
7
  0.3.0 (12/15/2015)
2
8
  -----
3
9
  * upgrade CZMQ low-level binding to
data/README.md CHANGED
@@ -56,11 +56,13 @@ Tested with these:
56
56
 
57
57
  This gem requires the presence of the CZMQ library, which in turn requires the
58
58
  ZMQ library. For **security mechanisms** like CURVE, you'll need
59
- [libsodium](https://github.com/jedisct1/libsodium).
59
+ [libsodium](https://github.com/jedisct1/libsodium) and at least ZMQ 4.0.
60
60
 
61
61
  On OSX using homebrew, run:
62
62
 
63
- $ brew install libsodium czmq
63
+ $ brew install libsodium
64
+ $ brew install zmq --with-libsodium
65
+ $ brew install czmq
64
66
 
65
67
  If you're running Linux, go check [this page](http://zeromq.org/distro:_start)
66
68
  to get more help. Make sure to install CZMQ, not only ZMQ.
data/lib/czmq-ffi-gen.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require_relative "czmq-ffi-gen/czmq/ffi"
2
2
  require_relative "czmq-ffi-gen/gem_version"
3
3
  require_relative "czmq-ffi-gen/library_version"
4
+ require_relative "czmq-ffi-gen/signals"
4
5
  CZMQ::FFI.available? or raise LoadError, "libczmq is not available"
@@ -404,6 +404,28 @@ module CZMQ
404
404
 
405
405
  require_relative 'ffi/zpoller'
406
406
 
407
+ attach_function :zproc_czmq_version, [], :int, **opts
408
+ attach_function :zproc_interrupted, [], :bool, **opts
409
+ attach_function :zproc_has_curve, [], :bool, **opts
410
+ attach_function :zproc_hostname, [], :pointer, **opts
411
+ attach_function :zproc_daemonize, [:string], :void, **opts
412
+ attach_function :zproc_run_as, [:string, :string, :string], :void, **opts
413
+ attach_function :zproc_set_io_threads, [:size_t], :void, **opts
414
+ attach_function :zproc_set_max_sockets, [:size_t], :void, **opts
415
+ attach_function :zproc_set_biface, [:string], :void, **opts
416
+ attach_function :zproc_biface, [], :string, **opts
417
+ attach_function :zproc_set_log_ident, [:string], :void, **opts
418
+ attach_function :zproc_set_log_sender, [:string], :void, **opts
419
+ attach_function :zproc_set_log_system, [:bool], :void, **opts
420
+ attach_function :zproc_log_error, [:string, :varargs], :void, **opts
421
+ attach_function :zproc_log_warning, [:string, :varargs], :void, **opts
422
+ attach_function :zproc_log_notice, [:string, :varargs], :void, **opts
423
+ attach_function :zproc_log_info, [:string, :varargs], :void, **opts
424
+ attach_function :zproc_log_debug, [:string, :varargs], :void, **opts
425
+ attach_function :zproc_test, [:bool], :void, **opts
426
+
427
+ require_relative 'ffi/zproc'
428
+
407
429
  attach_function :zsock_new, [:int], :pointer, **opts
408
430
  attach_function :zsock_new_pub, [:string], :pointer, **opts
409
431
  attach_function :zsock_new_sub, [:string, :string], :pointer, **opts
@@ -0,0 +1,294 @@
1
+ ################################################################################
2
+ # THIS FILE IS 100% GENERATED BY ZPROJECT; DO NOT EDIT EXCEPT EXPERIMENTALLY #
3
+ # Please refer to the README for information about making permanent changes. #
4
+ ################################################################################
5
+
6
+ module CZMQ
7
+ module FFI
8
+
9
+ # process configuration and status
10
+ # @note This class is 100% generated using zproject.
11
+ class Zproc
12
+ # Raised when one tries to use an instance of {Zproc} after
13
+ # the internal pointer to the native object has been nullified.
14
+ class DestroyedError < RuntimeError; end
15
+
16
+ # Boilerplate for self pointer, initializer, and finalizer
17
+ class << self
18
+ alias :__new :new
19
+ end
20
+ # Attaches the pointer _ptr_ to this instance and defines a finalizer for
21
+ # it if necessary.
22
+ # @param ptr [::FFI::Pointer]
23
+ # @param finalize [Boolean]
24
+ def initialize(ptr, finalize = true)
25
+ @ptr = ptr
26
+ if @ptr.null?
27
+ @ptr = nil # Remove null pointers so we don't have to test for them.
28
+ elsif finalize
29
+ @finalizer = self.class.create_finalizer_for @ptr
30
+ ObjectSpace.define_finalizer self, @finalizer
31
+ end
32
+ end
33
+ # @return [Proc]
34
+ def self.create_finalizer_for(ptr)
35
+ Proc.new do
36
+ "WARNING: "\
37
+ "Objects of type #{self} cannot be destroyed implicitly. "\
38
+ "Please call the correct destroy method with the relevant arguments."
39
+ end
40
+ end
41
+ # @return [Boolean]
42
+ def null?
43
+ !@ptr or @ptr.null?
44
+ end
45
+ # Return internal pointer
46
+ # @return [::FFI::Pointer]
47
+ def __ptr
48
+ raise DestroyedError unless @ptr
49
+ @ptr
50
+ end
51
+ # So external Libraries can just pass the Object to a FFI function which expects a :pointer
52
+ alias_method :to_ptr, :__ptr
53
+ # Nullify internal pointer and return pointer pointer.
54
+ # @note This detaches the current instance from the native object
55
+ # and thus makes it unusable.
56
+ # @return [::FFI::MemoryPointer] the pointer pointing to a pointer
57
+ # pointing to the native object
58
+ def __ptr_give_ref
59
+ raise DestroyedError unless @ptr
60
+ ptr_ptr = ::FFI::MemoryPointer.new :pointer
61
+ ptr_ptr.write_pointer @ptr
62
+ __undef_finalizer if @finalizer
63
+ @ptr = nil
64
+ ptr_ptr
65
+ end
66
+ # Undefines the finalizer for this object.
67
+ # @note Only use this if you need to and can guarantee that the native
68
+ # object will be freed by other means.
69
+ # @return [void]
70
+ def __undef_finalizer
71
+ ObjectSpace.undefine_finalizer self
72
+ @finalizer = nil
73
+ end
74
+
75
+ # Returns CZMQ version as a single 6-digit integer encoding the major
76
+ # version (x 10000), the minor version (x 100) and the patch.
77
+ #
78
+ # @return [Integer]
79
+ def self.czmq_version()
80
+ result = ::CZMQ::FFI.zproc_czmq_version()
81
+ result
82
+ end
83
+
84
+ # Returns true if the process received a SIGINT or SIGTERM signal.
85
+ # It is good practice to use this method to exit any infinite loop
86
+ # processing messages.
87
+ #
88
+ # @return [Boolean]
89
+ def self.interrupted()
90
+ result = ::CZMQ::FFI.zproc_interrupted()
91
+ result
92
+ end
93
+
94
+ # Returns true if the underlying libzmq supports CURVE security.
95
+ #
96
+ # @return [Boolean]
97
+ def self.has_curve()
98
+ result = ::CZMQ::FFI.zproc_has_curve()
99
+ result
100
+ end
101
+
102
+ # Return current host name, for use in public tcp:// endpoints.
103
+ # If the host name is not resolvable, returns NULL.
104
+ #
105
+ # @return [::FFI::AutoPointer]
106
+ def self.hostname()
107
+ result = ::CZMQ::FFI.zproc_hostname()
108
+ result = ::FFI::AutoPointer.new(result, LibC.method(:free))
109
+ result
110
+ end
111
+
112
+ # Move the current process into the background. The precise effect
113
+ # depends on the operating system. On POSIX boxes, moves to a specified
114
+ # working directory (if specified), closes all file handles, reopens
115
+ # stdin, stdout, and stderr to the null device, and sets the process to
116
+ # ignore SIGHUP. On Windows, does nothing. Returns 0 if OK, -1 if there
117
+ # was an error.
118
+ #
119
+ # @param workdir [String, #to_s, nil]
120
+ # @return [void]
121
+ def self.daemonize(workdir)
122
+ result = ::CZMQ::FFI.zproc_daemonize(workdir)
123
+ result
124
+ end
125
+
126
+ # Drop the process ID into the lockfile, with exclusive lock, and
127
+ # switch the process to the specified group and/or user. Any of the
128
+ # arguments may be null, indicating a no-op. Returns 0 on success,
129
+ # -1 on failure. Note if you combine this with zsys_daemonize, run
130
+ # after, not before that method, or the lockfile will hold the wrong
131
+ # process ID.
132
+ #
133
+ # @param lockfile [String, #to_s, nil]
134
+ # @param group [String, #to_s, nil]
135
+ # @param user [String, #to_s, nil]
136
+ # @return [void]
137
+ def self.run_as(lockfile, group, user)
138
+ result = ::CZMQ::FFI.zproc_run_as(lockfile, group, user)
139
+ result
140
+ end
141
+
142
+ # Configure the number of I/O threads that ZeroMQ will use. A good
143
+ # rule of thumb is one thread per gigabit of traffic in or out. The
144
+ # default is 1, sufficient for most applications. If the environment
145
+ # variable ZSYS_IO_THREADS is defined, that provides the default.
146
+ # Note that this method is valid only before any socket is created.
147
+ #
148
+ # @param io_threads [Integer, #to_int, #to_i]
149
+ # @return [void]
150
+ def self.set_io_threads(io_threads)
151
+ io_threads = Integer(io_threads)
152
+ result = ::CZMQ::FFI.zproc_set_io_threads(io_threads)
153
+ result
154
+ end
155
+
156
+ # Configure the number of sockets that ZeroMQ will allow. The default
157
+ # is 1024. The actual limit depends on the system, and you can query it
158
+ # by using zsys_socket_limit (). A value of zero means "maximum".
159
+ # Note that this method is valid only before any socket is created.
160
+ #
161
+ # @param max_sockets [Integer, #to_int, #to_i]
162
+ # @return [void]
163
+ def self.set_max_sockets(max_sockets)
164
+ max_sockets = Integer(max_sockets)
165
+ result = ::CZMQ::FFI.zproc_set_max_sockets(max_sockets)
166
+ result
167
+ end
168
+
169
+ # Set network interface name to use for broadcasts, particularly zbeacon.
170
+ # This lets the interface be configured for test environments where required.
171
+ # For example, on Mac OS X, zbeacon cannot bind to 255.255.255.255 which is
172
+ # the default when there is no specified interface. If the environment
173
+ # variable ZSYS_INTERFACE is set, use that as the default interface name.
174
+ # Setting the interface to "*" means "use all available interfaces".
175
+ #
176
+ # @param value [String, #to_s, nil]
177
+ # @return [void]
178
+ def self.set_biface(value)
179
+ result = ::CZMQ::FFI.zproc_set_biface(value)
180
+ result
181
+ end
182
+
183
+ # Return network interface to use for broadcasts, or "" if none was set.
184
+ #
185
+ # @return [String]
186
+ def self.biface()
187
+ result = ::CZMQ::FFI.zproc_biface()
188
+ result
189
+ end
190
+
191
+ # Set log identity, which is a string that prefixes all log messages sent
192
+ # by this process. The log identity defaults to the environment variable
193
+ # ZSYS_LOGIDENT, if that is set.
194
+ #
195
+ # @param value [String, #to_s, nil]
196
+ # @return [void]
197
+ def self.set_log_ident(value)
198
+ result = ::CZMQ::FFI.zproc_set_log_ident(value)
199
+ result
200
+ end
201
+
202
+ # Sends log output to a PUB socket bound to the specified endpoint. To
203
+ # collect such log output, create a SUB socket, subscribe to the traffic
204
+ # you care about, and connect to the endpoint. Log traffic is sent as a
205
+ # single string frame, in the same format as when sent to stdout. The
206
+ # log system supports a single sender; multiple calls to this method will
207
+ # bind the same sender to multiple endpoints. To disable the sender, call
208
+ # this method with a null argument.
209
+ #
210
+ # @param endpoint [String, #to_s, nil]
211
+ # @return [void]
212
+ def self.set_log_sender(endpoint)
213
+ result = ::CZMQ::FFI.zproc_set_log_sender(endpoint)
214
+ result
215
+ end
216
+
217
+ # Enable or disable logging to the system facility (syslog on POSIX boxes,
218
+ # event log on Windows). By default this is disabled.
219
+ #
220
+ # @param logsystem [Boolean]
221
+ # @return [void]
222
+ def self.set_log_system(logsystem)
223
+ logsystem = !(0==logsystem||!logsystem) # boolean
224
+ result = ::CZMQ::FFI.zproc_set_log_system(logsystem)
225
+ result
226
+ end
227
+
228
+ # Log error condition - highest priority
229
+ #
230
+ # @param format [String, #to_s, nil]
231
+ # @param args [Array<Object>] see https://github.com/ffi/ffi/wiki/examples#using-varargs
232
+ # @return [void]
233
+ def self.log_error(format, *args)
234
+ result = ::CZMQ::FFI.zproc_log_error(format, *args)
235
+ result
236
+ end
237
+
238
+ # Log warning condition - high priority
239
+ #
240
+ # @param format [String, #to_s, nil]
241
+ # @param args [Array<Object>] see https://github.com/ffi/ffi/wiki/examples#using-varargs
242
+ # @return [void]
243
+ def self.log_warning(format, *args)
244
+ result = ::CZMQ::FFI.zproc_log_warning(format, *args)
245
+ result
246
+ end
247
+
248
+ # Log normal, but significant, condition - normal priority
249
+ #
250
+ # @param format [String, #to_s, nil]
251
+ # @param args [Array<Object>] see https://github.com/ffi/ffi/wiki/examples#using-varargs
252
+ # @return [void]
253
+ def self.log_notice(format, *args)
254
+ result = ::CZMQ::FFI.zproc_log_notice(format, *args)
255
+ result
256
+ end
257
+
258
+ # Log informational message - low priority
259
+ #
260
+ # @param format [String, #to_s, nil]
261
+ # @param args [Array<Object>] see https://github.com/ffi/ffi/wiki/examples#using-varargs
262
+ # @return [void]
263
+ def self.log_info(format, *args)
264
+ result = ::CZMQ::FFI.zproc_log_info(format, *args)
265
+ result
266
+ end
267
+
268
+ # Log debug-level message - lowest priority
269
+ #
270
+ # @param format [String, #to_s, nil]
271
+ # @param args [Array<Object>] see https://github.com/ffi/ffi/wiki/examples#using-varargs
272
+ # @return [void]
273
+ def self.log_debug(format, *args)
274
+ result = ::CZMQ::FFI.zproc_log_debug(format, *args)
275
+ result
276
+ end
277
+
278
+ # Self test of this class.
279
+ #
280
+ # @param verbose [Boolean]
281
+ # @return [void]
282
+ def self.test(verbose)
283
+ verbose = !(0==verbose||!verbose) # boolean
284
+ result = ::CZMQ::FFI.zproc_test(verbose)
285
+ result
286
+ end
287
+ end
288
+ end
289
+ end
290
+
291
+ ################################################################################
292
+ # THIS FILE IS 100% GENERATED BY ZPROJECT; DO NOT EDIT EXCEPT EXPERIMENTALLY #
293
+ # Please refer to the README for information about making permanent changes. #
294
+ ################################################################################
@@ -1,5 +1,5 @@
1
1
  module CZMQ
2
2
  module FFI
3
- GEM_VERSION = "0.3.0"
3
+ GEM_VERSION = "0.4.0"
4
4
  end
5
5
  end
@@ -0,0 +1,27 @@
1
+ module CZMQ
2
+ module FFI
3
+
4
+ attach_function :zsys_handler_set, [:pointer], :void, blocking: true
5
+
6
+ # This is used to disable CZMQ's signal handling so blocking calls can be
7
+ # interrupted using Ctrl-C.
8
+ module Signals
9
+ module_function
10
+
11
+ @default_handling_disabled = false
12
+
13
+ # Disables default SIGINT/SIGTERM handling in CZMQ.
14
+ # @return [void]
15
+ def disable_default_handling
16
+ FFI.zsys_handler_set(nil)
17
+ @default_handling_disabled = true
18
+ end
19
+
20
+ # @return [Boolean] whether the CZMQ's default signal handling has been
21
+ # disabled
22
+ def default_handling_disabled?
23
+ @default_handling_disabled
24
+ end
25
+ end
26
+ end
27
+ 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.3.0
4
+ version: 0.4.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: 2015-12-15 00:00:00.000000000 Z
11
+ date: 2015-12-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
@@ -111,12 +111,14 @@ files:
111
111
  - lib/czmq-ffi-gen/czmq/ffi/zloop.rb
112
112
  - lib/czmq-ffi-gen/czmq/ffi/zmsg.rb
113
113
  - lib/czmq-ffi-gen/czmq/ffi/zpoller.rb
114
+ - lib/czmq-ffi-gen/czmq/ffi/zproc.rb
114
115
  - lib/czmq-ffi-gen/czmq/ffi/zsock.rb
115
116
  - lib/czmq-ffi-gen/czmq/ffi/zstr.rb
116
117
  - lib/czmq-ffi-gen/czmq/ffi/ztrie.rb
117
118
  - lib/czmq-ffi-gen/czmq/ffi/zuuid.rb
118
119
  - lib/czmq-ffi-gen/gem_version.rb
119
120
  - lib/czmq-ffi-gen/library_version.rb
121
+ - lib/czmq-ffi-gen/signals.rb
120
122
  homepage: https://github.com/paddor/czmq-ffi-gen
121
123
  licenses:
122
124
  - ISC