ffi-rxs 1.1.0 → 1.2.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.
- data/.gitignore +1 -0
- data/CHANGELOG +10 -0
- data/README.textile +13 -6
- data/examples/request.rb +1 -1
- data/ffi-rxs.gemspec +2 -2
- data/lib/ffi-rxs/constants.rb +12 -1
- data/lib/ffi-rxs/context.rb +1 -2
- data/lib/ffi-rxs/libxs.rb +2 -0
- data/lib/ffi-rxs/message.rb +0 -1
- data/lib/ffi-rxs/poll.rb +0 -1
- data/lib/ffi-rxs/socket.rb +19 -4
- data/lib/ffi-rxs/util.rb +22 -27
- data/lib/ffi-rxs/version.rb +1 -1
- data/spec/context_spec.rb +2 -6
- data/spec/message_spec.rb +2 -0
- data/spec/multipart_spec.rb +2 -0
- data/spec/nonblocking_recv_spec.rb +1 -0
- data/spec/poll_spec.rb +1 -1
- data/spec/pushpull_spec.rb +3 -2
- data/spec/reqrep_spec.rb +1 -0
- data/spec/socket_spec.rb +46 -9
- data/spec/spec_helper.rb +3 -2
- metadata +26 -24
- data/lib/ffi-rxs/constants.rb~ +0 -100
- data/lib/ffi-rxs/context.rb~ +0 -155
- data/lib/ffi-rxs/device.rb~ +0 -28
- data/lib/ffi-rxs/exceptions.rb~ +0 -47
- data/lib/ffi-rxs/libc.rb~ +0 -19
- data/lib/ffi-rxs/libxs.rb~ +0 -156
- data/lib/ffi-rxs/message.rb~ +0 -282
- data/lib/ffi-rxs/poll.rb~ +0 -212
- data/lib/ffi-rxs/poll_items.rb~ +0 -120
- data/lib/ffi-rxs/socket.rb~ +0 -659
- data/lib/ffi-rxs/util.rb~ +0 -105
- data/lib/ffi-rxs/version.rb~ +0 -3
data/.gitignore
CHANGED
data/CHANGELOG
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
= Version 1.2.0
|
2
|
+
|
3
|
+
* Add new surveyor socket types
|
4
|
+
* Add new xs_shutdown function and Socket#shutdown method
|
5
|
+
* Add UTF-8 encoding string to spec files
|
6
|
+
* Amend description to refer to Crossroads I/O as a messaging library
|
7
|
+
* XS::Util is now a singleton class
|
8
|
+
* Util.error_check method is now public
|
9
|
+
* Handle return codes from xs_connect and xs_bind that are > 0 or < -1
|
10
|
+
|
1
11
|
= Version 1.1.0
|
2
12
|
|
3
13
|
* Version number bumped to reflect addition of new features in v1.0.1
|
data/README.textile
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
h1. About ffi-rxs
|
2
2
|
|
3
|
-
|
3
|
+
"!https://secure.travis-ci.org/celldee/ffi-rxs.png!":http://travis-ci.org/celldee/ffi-rxs
|
4
4
|
|
5
|
-
Crossroads I/O
|
5
|
+
This gem wraps the "Crossroads I/O":http://crossroads.io messaging library (libxs) using the Ruby FFI (foreign function interface). It's a pure Ruby wrapper so this gem can be loaded and run by any Ruby runtime that supports FFI. That's all of them: MRI 1.9.x, Rubinius and JRuby.
|
6
|
+
|
7
|
+
Crossroads I/O is a fork of ZeroMQ. This gem is a re-working of the "ffi-rzmq":http://github.com/chuckremes/ffi-rzmq gem created by Chuck Remes to provide bindings for the libxs library instead of the ZeroMQ libzmq library.
|
6
8
|
|
7
9
|
h2. Features/Problems
|
8
10
|
|
@@ -15,10 +17,15 @@ h2. Requirements
|
|
15
17
|
* Crossroads I/O version 1.0.0 or later.
|
16
18
|
* ffi (>= 1.0.0)
|
17
19
|
|
18
|
-
The
|
19
|
-
|
20
|
-
Do *not* run this gem under MRI with an old 'ffi' gem. It will
|
20
|
+
The libxs library must be installed on your system in a well-known location like '/usr/local/lib'.
|
21
|
+
|
22
|
+
Do *not* run this gem under MRI with an old 'ffi' gem. It will not work as expected.
|
21
23
|
|
24
|
+
*NOTE*
|
25
|
+
The master GitHub repository contains a copy of the libxs library in the 'ext' directory. This is so that the "Travis CI":http://travis-ci.org continuous integration build platform can be used. The .gemspec file excludes the 'ext' directory from the gem build.
|
26
|
+
|
27
|
+
If you want to build a gem using a version of libxs other than your current system version, then you can include the library in the 'ext' directory. *Do not forget* to change the .gemspec file so that it does not exclude the library from the gem build.
|
28
|
+
|
22
29
|
h2. Installation
|
23
30
|
|
24
31
|
A full gem has been released to Rubygems.org as of release 1.0.0. Make sure the Crossroads I/O library is already installed on your system.
|
@@ -48,7 +55,7 @@ ctx = XS::Context.create()
|
|
48
55
|
socket = ctx.socket(XS::REQ)
|
49
56
|
socket.connect("tcp://127.0.0.1:5000")
|
50
57
|
|
51
|
-
|
58
|
+
(1..10).each do |i|
|
52
59
|
msg = "msg #{i.to_s}"
|
53
60
|
socket.send_string(msg)
|
54
61
|
puts "Sending: " + msg
|
data/examples/request.rb
CHANGED
data/ffi-rxs.gemspec
CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |s|
|
|
8
8
|
s.authors = ["Chris Duncan"]
|
9
9
|
s.email = ["celldee@gmail.com"]
|
10
10
|
s.homepage = "http://github.com/celldee/ffi-rxs"
|
11
|
-
s.summary = %q{Ruby FFI bindings for Crossroads I/O
|
12
|
-
s.description = %q{Ruby FFI bindings for Crossroads I/O
|
11
|
+
s.summary = %q{Ruby FFI bindings for Crossroads I/O messaging library.}
|
12
|
+
s.description = %q{Ruby FFI bindings for Crossroads I/O messaging library.}
|
13
13
|
|
14
14
|
s.files = `git ls-files`.split("\n")
|
15
15
|
s.files = s.files.reject{ |f| f.include?('ext/libxs.so') }
|
data/lib/ffi-rxs/constants.rb
CHANGED
@@ -19,6 +19,11 @@ module XS
|
|
19
19
|
PUSH = 8
|
20
20
|
XPUB = 9
|
21
21
|
XSUB = 10
|
22
|
+
SURVEYOR = 11
|
23
|
+
RESPONDENT = 12
|
24
|
+
XSURVEYOR = 13
|
25
|
+
XRESPONDENT = 14
|
26
|
+
|
22
27
|
DEALER = XREQ
|
23
28
|
ROUTER = XREP
|
24
29
|
|
@@ -35,7 +40,11 @@ module XS
|
|
35
40
|
ROUTER => "ROUTER",
|
36
41
|
DEALER => "DEALER",
|
37
42
|
XPUB => "XPUB",
|
38
|
-
XSUB => "XSUB"
|
43
|
+
XSUB => "XSUB",
|
44
|
+
SURVEYOR => "SURVEYOR",
|
45
|
+
RESPONDENT => "RESPONDENT",
|
46
|
+
XSURVEYOR => "XSURVEYOR",
|
47
|
+
XRESPONDENT => "XRESPONDENT"
|
39
48
|
}
|
40
49
|
|
41
50
|
# Socket options
|
@@ -63,6 +72,8 @@ module XS
|
|
63
72
|
SNDTIMEO = 28
|
64
73
|
IPV4ONLY = 31
|
65
74
|
KEEPALIVE = 32
|
75
|
+
PROTOCOL = 33
|
76
|
+
SURVEY_TIMEOUT = 34
|
66
77
|
|
67
78
|
# Message options
|
68
79
|
MORE = 1
|
data/lib/ffi-rxs/context.rb
CHANGED
@@ -29,7 +29,6 @@ module XS
|
|
29
29
|
# STDERR.puts "Context allocation failed"
|
30
30
|
# end
|
31
31
|
class Context
|
32
|
-
include XS::Util
|
33
32
|
|
34
33
|
attr_reader :context, :pointer
|
35
34
|
|
@@ -43,7 +42,7 @@ module XS
|
|
43
42
|
@sockets = []
|
44
43
|
@context = LibXS.xs_init()
|
45
44
|
@pointer = @context
|
46
|
-
error_check 'xs_init', (@context.nil? || @context.null?) ? -1 : 0
|
45
|
+
XS::Util.error_check 'xs_init', (@context.nil? || @context.null?) ? -1 : 0
|
47
46
|
|
48
47
|
define_finalizer
|
49
48
|
end
|
data/lib/ffi-rxs/libxs.rb
CHANGED
@@ -45,6 +45,8 @@ module XS
|
|
45
45
|
@blocking = true
|
46
46
|
attach_function :xs_setctxopt, [:pointer, :int, :pointer, :int], :int
|
47
47
|
@blocking = true
|
48
|
+
attach_function :xs_shutdown, [:pointer, :int], :int
|
49
|
+
@blocking = true
|
48
50
|
attach_function :xs_socket, [:pointer, :int], :pointer
|
49
51
|
@blocking = true
|
50
52
|
attach_function :xs_strerror, [:int], :pointer
|
data/lib/ffi-rxs/message.rb
CHANGED
data/lib/ffi-rxs/poll.rb
CHANGED
data/lib/ffi-rxs/socket.rb
CHANGED
@@ -3,7 +3,6 @@
|
|
3
3
|
module XS
|
4
4
|
|
5
5
|
module CommonSocketBehavior
|
6
|
-
include XS::Util
|
7
6
|
|
8
7
|
attr_reader :socket, :name
|
9
8
|
|
@@ -184,6 +183,9 @@ module XS
|
|
184
183
|
# socket.bind("tcp://127.0.0.1:5555")
|
185
184
|
#
|
186
185
|
# @param address
|
186
|
+
#
|
187
|
+
# @return 0 or greater if successful
|
188
|
+
# @return < 0 if unsuccessful
|
187
189
|
def bind address
|
188
190
|
LibXS.xs_bind @socket, address
|
189
191
|
end
|
@@ -195,10 +197,10 @@ module XS
|
|
195
197
|
#
|
196
198
|
# @param address
|
197
199
|
#
|
198
|
-
# @return 0 if successful
|
199
|
-
# @return
|
200
|
+
# @return 0 or greater if successful
|
201
|
+
# @return < 0 if unsuccessful
|
200
202
|
def connect address
|
201
|
-
|
203
|
+
LibXS.xs_connect @socket, address
|
202
204
|
end
|
203
205
|
|
204
206
|
# Closes the socket. Any unprocessed messages in queue are sent or dropped
|
@@ -333,6 +335,19 @@ module XS
|
|
333
335
|
message.close
|
334
336
|
rc
|
335
337
|
end
|
338
|
+
|
339
|
+
# Unbinds/disconnects the socket from an endpoint.
|
340
|
+
#
|
341
|
+
# @example
|
342
|
+
# socket.shutdown(endpoint_id)
|
343
|
+
#
|
344
|
+
# @param endpoint_id (endpoint id returned from socket.bind/socket.connect)
|
345
|
+
#
|
346
|
+
# @return 0 if successful
|
347
|
+
# @return -1 if unsuccessful
|
348
|
+
def shutdown endpoint_id
|
349
|
+
LibXS.xs_shutdown @socket, endpoint_id
|
350
|
+
end
|
336
351
|
|
337
352
|
# Dequeues a message from the underlying queue. By default, this is a blocking operation.
|
338
353
|
#
|
data/lib/ffi-rxs/util.rb
CHANGED
@@ -1,10 +1,9 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
module XS
|
4
|
-
|
5
|
-
#
|
6
|
-
|
7
|
-
module Util
|
4
|
+
|
5
|
+
# Provides general utility methods
|
6
|
+
class Util
|
8
7
|
|
9
8
|
# @return true when +rc+ is greater than or equal to 0
|
10
9
|
# @return false otherwise
|
@@ -63,23 +62,13 @@ module XS
|
|
63
62
|
resultcode_ok?(rc) ? random : nil
|
64
63
|
end
|
65
64
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
# Generate a random port between 10_000 and 65534
|
70
|
-
#
|
71
|
-
# @return port number
|
72
|
-
def self.random_port
|
73
|
-
rand(55534) + 10_000
|
74
|
-
end
|
75
|
-
|
76
|
-
# Called by most library methods to verify there were no errors during
|
77
|
-
# operation. If any are found, raise the appropriate #XSError.
|
65
|
+
# Called to verify there were no errors during operation. If any are found,
|
66
|
+
# raise the appropriate XSError.
|
78
67
|
#
|
79
68
|
# @return true when no error is found which is behavior used internally
|
80
69
|
# by #send and #recv.
|
81
|
-
def error_check source, result_code
|
82
|
-
if
|
70
|
+
def self.error_check source, result_code
|
71
|
+
if result_code < 0
|
83
72
|
raise_error source, result_code
|
84
73
|
end
|
85
74
|
|
@@ -87,25 +76,31 @@ module XS
|
|
87
76
|
true
|
88
77
|
end
|
89
78
|
|
79
|
+
private
|
80
|
+
|
81
|
+
# Generate a random port between 10_000 and 65534
|
82
|
+
#
|
83
|
+
# @return port number
|
84
|
+
def self.random_port
|
85
|
+
rand(55534) + 10_000
|
86
|
+
end
|
87
|
+
|
90
88
|
# Raises error
|
91
89
|
#
|
92
90
|
# @param source
|
93
91
|
# @param result_code
|
94
|
-
def raise_error source, result_code
|
95
|
-
|
92
|
+
def self.raise_error source, result_code
|
93
|
+
case source
|
94
|
+
when 'xs_init', 'xs_socket'
|
96
95
|
raise ContextError.new source, result_code, XS::Util.errno, XS::Util.error_string
|
97
|
-
|
98
|
-
elsif ['xs_msg_init', 'xs_msg_init_data', 'xs_msg_copy', 'xs_msg_move'].include?(source)
|
96
|
+
when 'xs_msg_init', 'xs_msg_init_data', 'xs_msg_copy', 'xs_msg_move'
|
99
97
|
raise MessageError.new source, result_code, XS::Util.errno, XS::Util.error_string
|
100
|
-
|
101
98
|
else
|
102
|
-
|
103
|
-
raise XSError.new source, result_code, -1,
|
104
|
-
"Source [#{source}] does not match any xs_* strings, rc [#{result_code}], errno [#{XS::Util.errno}], error_string [#{XS::Util.error_string}]"
|
99
|
+
raise XSError.new source, result_code, XS::Util.errno, XS::Util.error_string
|
105
100
|
end
|
106
101
|
end
|
107
102
|
|
108
|
-
def eagain?
|
103
|
+
def self.eagain?
|
109
104
|
EAGAIN == XS::Util.errno
|
110
105
|
end
|
111
106
|
|
data/lib/ffi-rxs/version.rb
CHANGED
data/spec/context_spec.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
# encoding: utf-8
|
2
2
|
|
3
3
|
require File.join(File.dirname(__FILE__), %w[spec_helper])
|
4
4
|
|
@@ -59,11 +59,10 @@ module XS
|
|
59
59
|
context "when setting context options" do
|
60
60
|
include APIHelper
|
61
61
|
|
62
|
-
it "
|
62
|
+
it "should return unsuccessful code when option name is not recognized" do
|
63
63
|
ctx = Context.new
|
64
64
|
rc = ctx.setctxopt(XS::IDENTITY, 10)
|
65
65
|
Util.resultcode_ok?(rc).should be_false
|
66
|
-
XS::Util.errno.should == XS::EINVAL
|
67
66
|
end
|
68
67
|
end
|
69
68
|
|
@@ -74,14 +73,12 @@ module XS
|
|
74
73
|
ctx = Context.new
|
75
74
|
rc = ctx.setctxopt(XS::IO_THREADS, 0)
|
76
75
|
Util.resultcode_ok?(rc).should be_false
|
77
|
-
XS::Util.errno.should == XS::EINVAL
|
78
76
|
end
|
79
77
|
|
80
78
|
it "should return unsuccessful code for negative io threads" do
|
81
79
|
ctx = Context.new
|
82
80
|
rc = ctx.setctxopt(XS::IO_THREADS, -1)
|
83
81
|
Util.resultcode_ok?(rc).should be_false
|
84
|
-
XS::Util.errno.should == XS::EINVAL
|
85
82
|
end
|
86
83
|
|
87
84
|
it "should return successful code for positive io threads" do
|
@@ -105,7 +102,6 @@ module XS
|
|
105
102
|
ctx = Context.new
|
106
103
|
rc = ctx.setctxopt(XS::MAX_SOCKETS, -1)
|
107
104
|
Util.resultcode_ok?(rc).should be_false
|
108
|
-
XS::Util.errno.should == XS::EINVAL
|
109
105
|
end
|
110
106
|
|
111
107
|
it "should return successful code for positive max sockets" do
|
data/spec/message_spec.rb
CHANGED
data/spec/multipart_spec.rb
CHANGED
data/spec/poll_spec.rb
CHANGED
data/spec/pushpull_spec.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# encoding: utf-8
|
1
2
|
|
2
3
|
require File.join(File.dirname(__FILE__), %w[spec_helper])
|
3
4
|
|
@@ -61,7 +62,7 @@ module XS
|
|
61
62
|
pull = @context.socket XS::PULL
|
62
63
|
rc = pull.setsockopt XS::LINGER, 0
|
63
64
|
rc = pull.connect @link
|
64
|
-
rc.
|
65
|
+
rc.should_not be < 0
|
65
66
|
buffer = ''
|
66
67
|
rc = pull.recv_string buffer
|
67
68
|
rc.should == 11
|
@@ -86,7 +87,7 @@ module XS
|
|
86
87
|
pull = @context.socket XS::PULL
|
87
88
|
rc = pull.setsockopt XS::LINGER, 0
|
88
89
|
rc = pull.connect @link
|
89
|
-
rc.
|
90
|
+
rc.should_not be < 0
|
90
91
|
mutex = Mutex.new
|
91
92
|
|
92
93
|
count.times do |i|
|
data/spec/reqrep_spec.rb
CHANGED
data/spec/socket_spec.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
|
+
# encoding: utf-8
|
1
2
|
|
2
3
|
require File.join(File.dirname(__FILE__), %w[spec_helper])
|
3
4
|
|
4
5
|
module XS
|
5
6
|
|
6
|
-
|
7
7
|
describe Socket do
|
8
8
|
|
9
|
-
socket_types = [XS::REQ, XS::REP, XS::DEALER, XS::ROUTER, XS::PUB, XS::SUB, XS::PUSH, XS::PULL, XS::PAIR, XS::XPUB, XS::XSUB]
|
9
|
+
socket_types = [XS::REQ, XS::REP, XS::DEALER, XS::ROUTER, XS::PUB, XS::SUB, XS::PUSH, XS::PULL, XS::PAIR, XS::XPUB, XS::XSUB, XS::SURVEYOR, XS::XSURVEYOR, XS::RESPONDENT, XS::XRESPONDENT]
|
10
10
|
|
11
11
|
context "when initializing" do
|
12
12
|
before(:all) { @ctx = Context.new }
|
@@ -418,7 +418,7 @@ module XS
|
|
418
418
|
socket.close
|
419
419
|
end
|
420
420
|
|
421
|
-
if RUBY_PLATFORM =~ /linux|darwin/
|
421
|
+
if RUBY_PLATFORM =~ /linux|darwin|java/
|
422
422
|
# this spec doesn't work on Windows; hints welcome
|
423
423
|
|
424
424
|
context "using option XS::FD" do
|
@@ -467,12 +467,14 @@ module XS
|
|
467
467
|
|
468
468
|
end # posix platform
|
469
469
|
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
470
|
+
unless XS::SocketTypeNameMap[socket_type] == 'SURVEYOR' # Feature not implemented yet
|
471
|
+
context "using option XS::EVENTS" do
|
472
|
+
it "should return a mask of events as a Fixnum" do
|
473
|
+
array = []
|
474
|
+
rc = socket.getsockopt(XS::EVENTS, array)
|
475
|
+
rc.should == 0
|
476
|
+
array[0].should be_a(Fixnum)
|
477
|
+
end
|
476
478
|
end
|
477
479
|
end
|
478
480
|
|
@@ -552,6 +554,41 @@ module XS
|
|
552
554
|
end
|
553
555
|
|
554
556
|
end # describe 'events mapping to pollin and pollout'
|
557
|
+
|
558
|
+
socket_types.each do |socket_type|
|
559
|
+
|
560
|
+
context "calling shutdown" do
|
561
|
+
before(:each) do
|
562
|
+
@ctx = Context.new
|
563
|
+
@socket = @ctx.socket socket_type
|
564
|
+
end
|
565
|
+
|
566
|
+
after(:each) do
|
567
|
+
@socket.close
|
568
|
+
@ctx.terminate
|
569
|
+
end
|
570
|
+
|
571
|
+
it "unbinds #{XS::SocketTypeNameMap[socket_type]} socket" do
|
572
|
+
rc = @socket.bind("tcp://127.0.0.1:5555")
|
573
|
+
sleep 0.2
|
574
|
+
rc.should be > -1
|
575
|
+
rc = @socket.shutdown(rc)
|
576
|
+
sleep 0.2
|
577
|
+
rc.should == 0
|
578
|
+
end
|
579
|
+
|
580
|
+
it "disconnects #{XS::SocketTypeNameMap[socket_type]} socket" do
|
581
|
+
rc = @socket.connect("tcp://127.0.0.1:5555")
|
582
|
+
sleep 0.2
|
583
|
+
rc.should be > -1
|
584
|
+
rc = @socket.shutdown(rc)
|
585
|
+
sleep 0.2
|
586
|
+
rc.should == 0
|
587
|
+
end
|
588
|
+
|
589
|
+
end # context calling shutdown
|
590
|
+
|
591
|
+
end
|
555
592
|
|
556
593
|
end # describe Socket
|
557
594
|
|
data/spec/spec_helper.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
# Execute 'rake spec' from the main directory to run all specs.
|
2
4
|
|
3
|
-
require File.expand_path(
|
4
|
-
File.join(File.dirname(__FILE__), %w[.. lib ffi-rxs]))
|
5
|
+
require File.expand_path(File.join(File.dirname(__FILE__), %w[.. lib ffi-rxs]))
|
5
6
|
|
6
7
|
Thread.abort_on_exception = true
|
7
8
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ffi-rxs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-05-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ffi
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: rspec
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ~>
|
@@ -32,10 +37,15 @@ dependencies:
|
|
32
37
|
version: '2.6'
|
33
38
|
type: :development
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '2.6'
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: rake
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
51
|
- - ! '>='
|
@@ -43,8 +53,13 @@ dependencies:
|
|
43
53
|
version: '0'
|
44
54
|
type: :development
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
47
|
-
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
description: Ruby FFI bindings for Crossroads I/O messaging library.
|
48
63
|
email:
|
49
64
|
- celldee@gmail.com
|
50
65
|
executables: []
|
@@ -79,28 +94,16 @@ files:
|
|
79
94
|
- ffi-rxs.gemspec
|
80
95
|
- lib/ffi-rxs.rb
|
81
96
|
- lib/ffi-rxs/constants.rb
|
82
|
-
- lib/ffi-rxs/constants.rb~
|
83
97
|
- lib/ffi-rxs/context.rb
|
84
|
-
- lib/ffi-rxs/context.rb~
|
85
|
-
- lib/ffi-rxs/device.rb~
|
86
98
|
- lib/ffi-rxs/exceptions.rb
|
87
|
-
- lib/ffi-rxs/exceptions.rb~
|
88
99
|
- lib/ffi-rxs/libc.rb
|
89
|
-
- lib/ffi-rxs/libc.rb~
|
90
100
|
- lib/ffi-rxs/libxs.rb
|
91
|
-
- lib/ffi-rxs/libxs.rb~
|
92
101
|
- lib/ffi-rxs/message.rb
|
93
|
-
- lib/ffi-rxs/message.rb~
|
94
102
|
- lib/ffi-rxs/poll.rb
|
95
|
-
- lib/ffi-rxs/poll.rb~
|
96
103
|
- lib/ffi-rxs/poll_items.rb
|
97
|
-
- lib/ffi-rxs/poll_items.rb~
|
98
104
|
- lib/ffi-rxs/socket.rb
|
99
|
-
- lib/ffi-rxs/socket.rb~
|
100
105
|
- lib/ffi-rxs/util.rb
|
101
|
-
- lib/ffi-rxs/util.rb~
|
102
106
|
- lib/ffi-rxs/version.rb
|
103
|
-
- lib/ffi-rxs/version.rb~
|
104
107
|
- spec/context_spec.rb
|
105
108
|
- spec/message_spec.rb
|
106
109
|
- spec/multipart_spec.rb
|
@@ -130,9 +133,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
130
133
|
version: '0'
|
131
134
|
requirements: []
|
132
135
|
rubyforge_project:
|
133
|
-
rubygems_version: 1.8.
|
136
|
+
rubygems_version: 1.8.23
|
134
137
|
signing_key:
|
135
138
|
specification_version: 3
|
136
|
-
summary: Ruby FFI bindings for Crossroads I/O
|
139
|
+
summary: Ruby FFI bindings for Crossroads I/O messaging library.
|
137
140
|
test_files: []
|
138
|
-
has_rdoc:
|