ffi-czmq 0.0.8.pre → 0.0.9.pre

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: 1ee32b12e0f81bc60c2dd069a43e1bc86644f296
4
- data.tar.gz: f3ec35a8b9254d33e36ca0b0d2fac0b8423c9126
3
+ metadata.gz: 6d7bc5dbfbbab88b01da91de2d64910c29d5230e
4
+ data.tar.gz: 996a30caf32c11dd341ecda967bcfdb1a44766dd
5
5
  SHA512:
6
- metadata.gz: 834505429bdbc0b2d363d844e6c60fe80c72c50586187e2a173462b92065d630b6aa7f64d5ea7b90e2d7ccda82e4a0cd2e763b1fc19c955dbc90548b5db4bd0b
7
- data.tar.gz: da136c3aaf401986566335ffe508aef85f20e3ec00eb9d49103fde2758c3eab8f2b4395e5026a2ba64035851ce60b4d14a7f611a72231d52a99b4878792a8bd5
6
+ metadata.gz: 0247ce7e0940e2ab8661e98935a8bcc780c7362bfa6a8878db03c21aa84e542230f3679f3d6d730aedf2b78a3c502348b34371e4a0433e6500ee7025af219b6a
7
+ data.tar.gz: 15a1dc2f33b43609b1657773ed649848530ab6e8d76cc8fafeca0d378ede15b054a2250a7f64631d6130d7232cc7010b4b081cbc46352493b51dedf9b51d3062
data/lib/czmq/libczmq.rb CHANGED
@@ -56,7 +56,7 @@ module LibCZMQ
56
56
  czmq_obj = instance.class.constructor(*args)
57
57
  end
58
58
 
59
- !czmq_obj.null? ||fail(RuntimeError, "Cannot allocate #{czmq_class} because of #{CZMQ::Utils.error}", caller)
59
+ !czmq_obj.null? ||fail(NoMemoryError, "Cannot allocate #{czmq_class} because of #{CZMQ::Utils.error}", caller)
60
60
 
61
61
  instance.instance_variable_set(:@czmq_obj, czmq_obj)
62
62
  instance.instance_variable_set(:@owned_by_ruby, true)
@@ -183,7 +183,7 @@ module LibCZMQ
183
183
 
184
184
  case #{returns.inspect}
185
185
  when :pointer
186
- !result.null? ||fail(RuntimeError, CZMQ::Utils.error, caller)
186
+ !result.null? ||fail(NoMemoryError, CZMQ::Utils.error, caller)
187
187
  result
188
188
  when :int
189
189
  case #{function.inspect}
data/lib/czmq/utils.rb CHANGED
@@ -12,44 +12,44 @@ module CZMQ
12
12
  attach_function :errno, :zmq_errno, [], :int, blocking: true
13
13
  attach_function :strerror, :zmq_strerror, [:int], :string, blocking: true
14
14
 
15
- class << self
16
- def version
17
- unless @version
18
- z_major = FFI::MemoryPointer.new :int
19
- z_minor = FFI::MemoryPointer.new :int
20
- z_patch = FFI::MemoryPointer.new :int
21
-
22
- c_major = FFI::MemoryPointer.new :int
23
- c_minor = FFI::MemoryPointer.new :int
24
- c_patch = FFI::MemoryPointer.new :int
25
-
26
- zmq_version z_major, z_minor, z_patch
27
- zsys_version c_major, c_minor, c_patch
28
-
29
- @version = {
30
- zmq: {major: z_major.read_int, minor: z_minor.read_int, patch: z_patch.read_int},
31
- czmq: {major: c_major.read_int, minor: c_minor.read_int, patch: c_patch.read_int}
32
- }
33
- end
34
-
35
- @version
36
- end
15
+ module_function
37
16
 
38
- def check_for_pointer(ptr)
39
- ptr.is_a?(FFI::Pointer) && !ptr.null?
40
- end
17
+ def version
18
+ unless @version
19
+ z_major = FFI::MemoryPointer.new :int
20
+ z_minor = FFI::MemoryPointer.new :int
21
+ z_patch = FFI::MemoryPointer.new :int
41
22
 
42
- def error
43
- strerror(errno)
44
- end
23
+ c_major = FFI::MemoryPointer.new :int
24
+ c_minor = FFI::MemoryPointer.new :int
25
+ c_patch = FFI::MemoryPointer.new :int
45
26
 
46
- def bin2hex(bytes)
47
- bytes.to_str.unpack(HEXY).first
48
- end
27
+ zmq_version z_major, z_minor, z_patch
28
+ zsys_version c_major, c_minor, c_patch
49
29
 
50
- def hex2bin(hex)
51
- [hex].pack(HEXY)
30
+ @version = {
31
+ zmq: {major: z_major.read_int, minor: z_minor.read_int, patch: z_patch.read_int},
32
+ czmq: {major: c_major.read_int, minor: c_minor.read_int, patch: c_patch.read_int}
33
+ }
52
34
  end
35
+
36
+ @version
37
+ end
38
+
39
+ def check_for_pointer(ptr)
40
+ ptr.is_a?(FFI::Pointer) && !ptr.null?
41
+ end
42
+
43
+ def error
44
+ strerror(errno)
45
+ end
46
+
47
+ def bin2hex(bytes)
48
+ bytes.to_str.unpack(HEXY).first
49
+ end
50
+
51
+ def hex2bin(hex)
52
+ [hex].pack(HEXY)
53
53
  end
54
54
 
55
55
  if version[:czmq][:major] < 3
data/lib/czmq/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module CZMQ
2
- VERSION = Gem::Version.new('0.0.8.pre')
2
+ VERSION = Gem::Version.new('0.0.9.pre')
3
3
  end
data/lib/czmq/zstr.rb ADDED
@@ -0,0 +1,65 @@
1
+ require_relative 'libczmq'
2
+ require_relative 'utils'
3
+ require_relative 'zsock'
4
+
5
+ module CZMQ
6
+ class Zstr
7
+ extend ::LibCZMQ
8
+
9
+ czmq_function :recv_zstr, :recv, [:pointer], :pointer
10
+ czmq_function :send_zstr, :send, [:pointer, :string], :int
11
+ czmq_function :sendm, :sendm, [:pointer, :string], :int
12
+ czmq_function :sendx_zstr, :sendx, [:pointer, :string, :varargs], :int
13
+ czmq_function :recvx_zsrt, :recvx, [:pointer, :buffer_out, :varargs], :int
14
+ czmq_function :free, :free, [:pointer], :void
15
+
16
+ class << self
17
+ def read_string(str_ptr)
18
+ if Utils.check_for_pointer(str_ptr)
19
+ str = str_ptr.read_string
20
+ free_ptr = FFI::MemoryPointer.new(:pointer)
21
+ free_ptr.write_pointer(str_ptr)
22
+ free(free_ptr)
23
+ str
24
+ else
25
+ fail ArgumentError, "#{str_ptr.class} is not a FFI::Pointer", caller
26
+ end
27
+ end
28
+
29
+ def recv(socket)
30
+ read_string(recv_zstr(Zsock.convert(socket)))
31
+ end
32
+
33
+ def sendx(socket, string, *strings)
34
+ if strings.size == 0
35
+ fail ArgumentError, "Wrong number of Arguments, (2 for 3..n)", caller
36
+ end
37
+
38
+ strings_varargs = ([ :string ] * strings.size).zip(strings).flatten
39
+ sendx_zstr(Zsock.convert(socket), string, *strings_varargs, :pointer, nil)
40
+ end
41
+
42
+ def recvx(socket, counter = 1)
43
+ if counter < 1
44
+ fail ArgumentError, "Counter must be >= 1, got #{counter}", caller
45
+ end
46
+
47
+ buffers = []
48
+ buffers << FFI::Buffer.new_out(:pointer)
49
+ counter.times do
50
+ buffers << :buffer_out
51
+ buffers << FFI::Buffer.new_out(:pointer)
52
+ end
53
+
54
+ recvx_zsrt(Zsock.convert(socket), *buffers, :pointer, nil)
55
+
56
+ strings = []
57
+ buffers.select {|buffer| buffer != :buffer_out}.each do |buffer|
58
+ strings << buffer.read_pointer.read_string
59
+ free(buffer)
60
+ end
61
+ strings
62
+ end
63
+ end
64
+ end
65
+ end
data/lib/czmq.rb CHANGED
@@ -11,3 +11,4 @@ require_relative 'czmq/zcert'
11
11
  require_relative 'czmq/zcertstore'
12
12
  require_relative 'czmq/ziflist'
13
13
  require_relative 'czmq/zconfig'
14
+ require_relative 'czmq/zstr'
data/lib/ffi-czmq.rb CHANGED
@@ -11,3 +11,4 @@ require_relative 'czmq/zcert'
11
11
  require_relative 'czmq/zcertstore'
12
12
  require_relative 'czmq/ziflist'
13
13
  require_relative 'czmq/zconfig'
14
+ require_relative 'czmq/zstr'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ffi-czmq
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8.pre
4
+ version: 0.0.9.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hendrik
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-10-09 00:00:00.000000000 Z
12
+ date: 2014-10-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ffi
@@ -62,6 +62,7 @@ files:
62
62
  - lib/czmq/zmsg.rb
63
63
  - lib/czmq/zpoller.rb
64
64
  - lib/czmq/zsock.rb
65
+ - lib/czmq/zstr.rb
65
66
  - lib/czmq/zsys.rb
66
67
  - lib/ffi-czmq.rb
67
68
  homepage: https://github.com/Asmod4n/ruby-ffi-czmq