czmq-ffi-gen 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a3da0e81176fb0b1958a764932b2b3f5425aca69
4
- data.tar.gz: 5321cfea3e669fedc76bdb678f69f96949af5883
3
+ metadata.gz: 0e7ea1498763380b45d14e2f37c8ca736ff24921
4
+ data.tar.gz: 30cb33214dc70fa3694bd58abbca662da97ca055
5
5
  SHA512:
6
- metadata.gz: 597331314771987231a1b4564d025d32b54fa92c88efed7b091f273c30d869adcec03a675d1fbc3436e2f3dee5b857e7d4f5f56f678394fd7f7ee85389d6da8b
7
- data.tar.gz: 3106a49ea1589d01034dadcef47b44562ed58313249ffcd317df778f13a2877471a6d1e209812b5d896fd152f7d4c70e781e488b5daa71450c0da779fcbe72e8
6
+ metadata.gz: 9b97a31986a2c80ee13ad7220ea965e457c94a814b39a763b50e4743787fe3bbc9b5455cf1a9abf4968afffea10fa5b8e5aeeb63d1d0e5a05e49d6e551470601
7
+ data.tar.gz: c6c557a7bf8038ed758b75832d64f0c5ed852e0d3ea5c6e50f5cebe6650c5b8e071d209345895f05e13ed66c217a2097af106f71ea321fdd9bd1261353645e2c
data/CHANGES.md CHANGED
@@ -1,3 +1,9 @@
1
+ 0.7.0 (01/21/2016)
2
+ -----
3
+ * add support for current stable release 3.0.2 of CZMQ
4
+ * upgrade CZMQ low-level binding to
5
+ - gracefully handle absent draft functions
6
+
1
7
  0.6.0 (01/15/2016)
2
8
  -----
3
9
  * upgrade CZMQ low-level binding to
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2015, Patrik Wenger
1
+ Copyright (c) 2016, Patrik Wenger
2
2
 
3
3
  Permission to use, copy, modify, and/or distribute this software for any
4
4
  purpose with or without fee is hereby granted, provided that the above
data/README.md CHANGED
@@ -23,51 +23,64 @@ The actual generated code lies in CZMQ, which is Git submodule of this
23
23
  repository, registered under `vendor/czmq`.
24
24
 
25
25
  So if you're not happy with any of the generated code, go have a closer look at
26
- CZMQ or zproject, which is used by CZMQ to generate the low-level binding.
26
+ [CZMQ](https://github.com/zeromq/czmq) (or
27
+ [zproject](https://github.com/zeromq/zproject), which is used by CZMQ to
28
+ generate the low-level binding).
27
29
 
28
30
  ### API Documentation
29
31
  For that same reason, API documentation of unreleased code (directly off this
30
32
  repository), like
31
33
  [rubydoc.info/github/paddor/czmq-ffi-gen](http://www.rubydoc.info/github/paddor/czmq-ffi-gen)
32
34
  **does NOT include any of the generated code**. _Rubydoc.info_ doesn't check
33
- out Git submodules as part of its documentation procedure. However, API
34
- documentation of the **released gem should work** just fine, as the gem release
35
- process will include all required source files directly within the gem.
36
-
37
- **Check out**
38
- [http://www.rubydoc.info/gems/czmq-ffi-gen](http://www.rubydoc.info/gems/czmq-ffi-gen)
39
- for the API documentation.
40
-
41
- ## Supported Rubies
42
-
43
- Tested on CI with these:
44
-
45
- * Ruby 2.2.4
46
- * JRuby HEAD (>= 9.0.0.0)
47
- * Rubinius
35
+ out Git submodules as part of its documentation procedure.
48
36
 
37
+ However, the API documentation of the **released** gem should include all the
38
+ code, as the gem release process will include all required source files
39
+ directly within the gem.
49
40
 
50
- ### Known NOT to work
41
+ Check out
42
+ [http://www.rubydoc.info/gems/czmq-ffi-gen](http://www.rubydoc.info/gems/czmq-ffi-gen)
43
+ for the API documentation **for the released gem**.
51
44
 
52
- * JRuby 1.7.x
53
- * doesn't work because of the use of the double splat operator (`**opts`)
45
+ ## Requirements
54
46
 
55
- ## Installation
47
+ * CZMQ >= 3.0
48
+ * ZMQ >= 4.0
56
49
 
57
- This gem requires the presence of the CZMQ library, which in turn requires the
58
- ZMQ library. For **security mechanisms** like CURVE, you'll need
59
- [libsodium](https://github.com/jedisct1/libsodium) and at least ZMQ 4.0.
50
+ For security mechanisms like CURVE, you'll need:
51
+ * [libsodium](https://github.com/jedisct1/libsodium)<Paste>
60
52
 
61
53
  On OSX using homebrew, run:
62
54
 
63
55
  $ brew install libsodium
64
56
  $ brew install zmq --with-libsodium
65
- $ brew install czmq
57
+ $ brew install czmq --HEAD
66
58
 
67
59
  If you're running Linux, go check [this page](http://zeromq.org/distro:_start)
68
60
  to get more help. Make sure to install CZMQ, not only ZMQ.
69
61
 
70
- To then use this gem, add this line to your application's Gemfile:
62
+ **Note**: The option `--HEAD` is recommended because this binding is generated
63
+ directly from CZMQ's master branch. However, it's not required.
64
+
65
+ ### Supported Rubies
66
+
67
+ See [.travis.yml](https://github.com/paddor/czmq-ffi-gen/blob/master/.travis.yml)
68
+ for a list of Ruby versions against which czmq-ffi-gen is tested.
69
+
70
+ At the time of writing, these include:
71
+
72
+ * MRI 2.3, 2.2.4, 2.1.8
73
+ * Rubinius (HEAD)
74
+ * JRuby 9000 (HEAD)
75
+
76
+ #### Known NOT to work
77
+
78
+ * JRuby 1.7.x and MRI < 2.0
79
+ * doesn't work because of the use of the double splat operator (`**opts`)
80
+
81
+ ## Installation
82
+
83
+ To use this gem, add this line to your application's Gemfile:
71
84
 
72
85
  ```ruby
73
86
  gem 'czmq-ffi-gen'
@@ -6,7 +6,7 @@
6
6
  module CZMQ
7
7
  module FFI
8
8
 
9
- # The zactor class provides a simple actor framework.
9
+ # provides a simple actor framework
10
10
  # @note This class is 100% generated using zproject.
11
11
  class Zactor
12
12
  # Raised when one tries to use an instance of {Zactor} after
@@ -6,7 +6,7 @@
6
6
  module CZMQ
7
7
  module FFI
8
8
 
9
- # zarmour - armoured text encoding and decoding
9
+ # armoured text encoding and decoding
10
10
  # @note This class is 100% generated using zproject.
11
11
  class Zarmour
12
12
  # Raised when one tries to use an instance of {Zarmour} after
@@ -6,7 +6,7 @@
6
6
  module CZMQ
7
7
  module FFI
8
8
 
9
- # zcert - work with CURVE security certificates
9
+ # work with CURVE security certificates
10
10
  # @note This class is 100% generated using zproject.
11
11
  class Zcert
12
12
  # Raised when one tries to use an instance of {Zcert} after
@@ -6,7 +6,7 @@
6
6
  module CZMQ
7
7
  module FFI
8
8
 
9
- # zcertstore - work with CURVE security certificate stores
9
+ # work with CURVE security certificate stores
10
10
  # @note This class is 100% generated using zproject.
11
11
  class Zcertstore
12
12
  # Raised when one tries to use an instance of {Zcertstore} after
@@ -6,7 +6,7 @@
6
6
  module CZMQ
7
7
  module FFI
8
8
 
9
- #
9
+ # work with memory chunks
10
10
  # @note This class is 100% generated using zproject.
11
11
  class Zchunk
12
12
  # Raised when one tries to use an instance of {Zchunk} after
@@ -0,0 +1,140 @@
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
+ # millisecond clocks and delays
10
+ # @note This class is 100% generated using zproject.
11
+ class Zclock
12
+ # Raised when one tries to use an instance of {Zclock} 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
+ # Sleep for a number of milliseconds
76
+ #
77
+ # @param msecs [Integer, #to_int, #to_i]
78
+ # @return [void]
79
+ def self.sleep(msecs)
80
+ msecs = Integer(msecs)
81
+ result = ::CZMQ::FFI.zclock_sleep(msecs)
82
+ result
83
+ end
84
+
85
+ # Return current system clock as milliseconds. Note that this clock can
86
+ # jump backwards (if the system clock is changed) so is unsafe to use for
87
+ # timers and time offsets. Use zclock_mono for that instead.
88
+ #
89
+ # @return [::FFI::Pointer]
90
+ def self.time()
91
+ result = ::CZMQ::FFI.zclock_time()
92
+ result
93
+ end
94
+
95
+ # Return current monotonic clock in milliseconds. Use this when you compute
96
+ # time offsets. The monotonic clock is not affected by system changes and
97
+ # so will never be reset backwards, unlike a system clock.
98
+ #
99
+ # @return [::FFI::Pointer]
100
+ def self.mono()
101
+ result = ::CZMQ::FFI.zclock_mono()
102
+ result
103
+ end
104
+
105
+ # Return current monotonic clock in microseconds. Use this when you compute
106
+ # time offsets. The monotonic clock is not affected by system changes and
107
+ # so will never be reset backwards, unlike a system clock.
108
+ #
109
+ # @return [::FFI::Pointer]
110
+ def self.usecs()
111
+ result = ::CZMQ::FFI.zclock_usecs()
112
+ result
113
+ end
114
+
115
+ # Return formatted date/time as fresh string. Free using zstr_free().
116
+ #
117
+ # @return [::FFI::AutoPointer]
118
+ def self.timestr()
119
+ result = ::CZMQ::FFI.zclock_timestr()
120
+ result = ::FFI::AutoPointer.new(result, LibC.method(:free))
121
+ result
122
+ end
123
+
124
+ # Self test of this class.
125
+ #
126
+ # @param verbose [Boolean]
127
+ # @return [void]
128
+ def self.test(verbose)
129
+ verbose = !(0==verbose||!verbose) # boolean
130
+ result = ::CZMQ::FFI.zclock_test(verbose)
131
+ result
132
+ end
133
+ end
134
+ end
135
+ end
136
+
137
+ ################################################################################
138
+ # THIS FILE IS 100% GENERATED BY ZPROJECT; DO NOT EDIT EXCEPT EXPERIMENTALLY #
139
+ # Please refer to the README for information about making permanent changes. #
140
+ ################################################################################
@@ -0,0 +1,156 @@
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
+ # zdigest - provides hashing functions (SHA-1 at present)
10
+ # @note This class is 100% generated using zproject.
11
+ class Zdigest
12
+ # Raised when one tries to use an instance of {Zdigest} 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
+ # @param ptr [::FFI::Pointer]
34
+ # @return [Proc]
35
+ def self.create_finalizer_for(ptr)
36
+ Proc.new do
37
+ ptr_ptr = ::FFI::MemoryPointer.new :pointer
38
+ ptr_ptr.write_pointer ptr
39
+ ::CZMQ::FFI.zdigest_destroy ptr_ptr
40
+ end
41
+ end
42
+ # @return [Boolean]
43
+ def null?
44
+ !@ptr or @ptr.null?
45
+ end
46
+ # Return internal pointer
47
+ # @return [::FFI::Pointer]
48
+ def __ptr
49
+ raise DestroyedError unless @ptr
50
+ @ptr
51
+ end
52
+ # So external Libraries can just pass the Object to a FFI function which expects a :pointer
53
+ alias_method :to_ptr, :__ptr
54
+ # Nullify internal pointer and return pointer pointer.
55
+ # @note This detaches the current instance from the native object
56
+ # and thus makes it unusable.
57
+ # @return [::FFI::MemoryPointer] the pointer pointing to a pointer
58
+ # pointing to the native object
59
+ def __ptr_give_ref
60
+ raise DestroyedError unless @ptr
61
+ ptr_ptr = ::FFI::MemoryPointer.new :pointer
62
+ ptr_ptr.write_pointer @ptr
63
+ __undef_finalizer if @finalizer
64
+ @ptr = nil
65
+ ptr_ptr
66
+ end
67
+ # Undefines the finalizer for this object.
68
+ # @note Only use this if you need to and can guarantee that the native
69
+ # object will be freed by other means.
70
+ # @return [void]
71
+ def __undef_finalizer
72
+ ObjectSpace.undefine_finalizer self
73
+ @finalizer = nil
74
+ end
75
+
76
+ # Constructor - creates new digest object, which you use to build up a
77
+ # digest by repeatedly calling zdigest_update() on chunks of data.
78
+ # @return [CZMQ::Zdigest]
79
+ def self.new()
80
+ ptr = ::CZMQ::FFI.zdigest_new()
81
+ __new ptr
82
+ end
83
+
84
+ # Destroy a digest object
85
+ #
86
+ # @return [void]
87
+ def destroy()
88
+ return unless @ptr
89
+ self_p = __ptr_give_ref
90
+ result = ::CZMQ::FFI.zdigest_destroy(self_p)
91
+ result
92
+ end
93
+
94
+ # Add buffer into digest calculation
95
+ #
96
+ # @param buffer [::FFI::Pointer, #to_ptr]
97
+ # @param length [Integer, #to_int, #to_i]
98
+ # @return [void]
99
+ def update(buffer, length)
100
+ raise DestroyedError unless @ptr
101
+ self_p = @ptr
102
+ length = Integer(length)
103
+ result = ::CZMQ::FFI.zdigest_update(self_p, buffer, length)
104
+ result
105
+ end
106
+
107
+ # Return final digest hash data. If built without crypto support, returns
108
+ # NULL.
109
+ #
110
+ # @return [::FFI::Pointer]
111
+ def data()
112
+ raise DestroyedError unless @ptr
113
+ self_p = @ptr
114
+ result = ::CZMQ::FFI.zdigest_data(self_p)
115
+ result
116
+ end
117
+
118
+ # Return final digest hash size
119
+ #
120
+ # @return [Integer]
121
+ def size()
122
+ raise DestroyedError unless @ptr
123
+ self_p = @ptr
124
+ result = ::CZMQ::FFI.zdigest_size(self_p)
125
+ result
126
+ end
127
+
128
+ # Return digest as printable hex string; caller should not modify nor
129
+ # free this string. After calling this, you may not use zdigest_update()
130
+ # on the same digest. If built without crypto support, returns NULL.
131
+ #
132
+ # @return [::FFI::Pointer]
133
+ def string()
134
+ raise DestroyedError unless @ptr
135
+ self_p = @ptr
136
+ result = ::CZMQ::FFI.zdigest_string(self_p)
137
+ result
138
+ end
139
+
140
+ # Self test of this class.
141
+ #
142
+ # @param verbose [Boolean]
143
+ # @return [void]
144
+ def self.test(verbose)
145
+ verbose = !(0==verbose||!verbose) # boolean
146
+ result = ::CZMQ::FFI.zdigest_test(verbose)
147
+ result
148
+ end
149
+ end
150
+ end
151
+ end
152
+
153
+ ################################################################################
154
+ # THIS FILE IS 100% GENERATED BY ZPROJECT; DO NOT EDIT EXCEPT EXPERIMENTALLY #
155
+ # Please refer to the README for information about making permanent changes. #
156
+ ################################################################################
@@ -90,7 +90,7 @@ module CZMQ
90
90
  end
91
91
 
92
92
  # Create a new callback of the following type:
93
- # DEPRECATED as clumsy -- use zhash_first/_next instead
93
+ # Callback function for zhash_foreach method. Deprecated.
94
94
  # typedef int (zhash_foreach_fn) (
95
95
  # const char *key, void *item, void *argument);
96
96
  #
@@ -383,11 +383,9 @@ module CZMQ
383
383
  result
384
384
  end
385
385
 
386
- # DEPRECATED as clumsy -- use zhash_first/_next instead
387
386
  # Apply function to each item in the hash table. Items are iterated in no
388
387
  # defined order. Stops if callback function returns non-zero and returns
389
- # final return code from callback function (zero = success).
390
- # Callback function for zhash_foreach method
388
+ # final return code from callback function (zero = success). Deprecated.
391
389
  #
392
390
  # @param callback [::FFI::Pointer, #to_ptr]
393
391
  # @param argument [::FFI::Pointer, #to_ptr]
@@ -308,11 +308,12 @@ module CZMQ
308
308
  # table. Uses the key_duplicator to duplicate all keys and sets the
309
309
  # key_destructor as destructor for the list.
310
310
  #
311
- # @return [::FFI::Pointer]
311
+ # @return [Zlistx]
312
312
  def keys()
313
313
  raise DestroyedError unless @ptr
314
314
  self_p = @ptr
315
315
  result = ::CZMQ::FFI.zhashx_keys(self_p)
316
+ result = Zlistx.__new result, true
316
317
  result
317
318
  end
318
319
 
@@ -320,11 +321,12 @@ module CZMQ
320
321
  # table. Uses the duplicator to duplicate all items and sets the
321
322
  # destructor as destructor for the list.
322
323
  #
323
- # @return [::FFI::Pointer]
324
+ # @return [Zlistx]
324
325
  def values()
325
326
  raise DestroyedError unless @ptr
326
327
  self_p = @ptr
327
328
  result = ::CZMQ::FFI.zhashx_values(self_p)
329
+ result = Zlistx.__new result, true
328
330
  result
329
331
  end
330
332