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 CHANGED
@@ -7,3 +7,4 @@ doc/*
7
7
 
8
8
  *.rbc
9
9
  .redcar/
10
+ *~
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
- This gem wraps the "Crossroads I/O":http://crossroads.io networking library 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.
3
+ "!https://secure.travis-ci.org/celldee/ffi-rxs.png!":http://travis-ci.org/celldee/ffi-rxs
4
4
 
5
- Crossroads I/O is a fork of ZeroMQ. This gem is a re-working of the ffi-rzmq gem created by Chuck Remes to provide bindings for the Crossroads I/O libxs C library instead of the ZeroMQ libzmq library. The gem auto-configures itself to expose the API conforming to the loaded C library.
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 Crossroads I/O library must be installed on your system in a well-known location like /usr/local/lib. This is the default for new Crossroads I/O installs. Future releases may include the library as a C extension built at time of installation.
19
-
20
- Do *not* run this gem under MRI with an old 'ffi' gem. It will crash randomly and you will be sad.
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
- for i in 1..10
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
@@ -15,7 +15,7 @@ ctx = XS::Context.create()
15
15
  socket = ctx.socket(XS::REQ)
16
16
  socket.connect("tcp://127.0.0.1:5000")
17
17
 
18
- for i in 1..10
18
+ (1..10).each do |i|
19
19
  msg = "msg #{i.to_s}"
20
20
  socket.send_string(msg)
21
21
  puts "Sending: " + msg
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 networking library.}
12
- s.description = %q{Ruby FFI bindings for Crossroads I/O networking library.}
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') }
@@ -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
@@ -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
@@ -84,7 +84,6 @@ module XS
84
84
  # puts "value1 is #{message.value1}"
85
85
  #
86
86
  class Message
87
- include XS::Util
88
87
 
89
88
  # Recommended way to create a standard message.
90
89
  #
data/lib/ffi-rxs/poll.rb CHANGED
@@ -3,7 +3,6 @@
3
3
  module XS
4
4
 
5
5
  class Poller
6
- include XS::Util
7
6
 
8
7
  attr_reader :readables, :writables
9
8
 
@@ -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 -1 if unsuccessful
200
+ # @return 0 or greater if successful
201
+ # @return < 0 if unsuccessful
200
202
  def connect address
201
- rc = LibXS.xs_connect @socket, address
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
- # These methods don't belong to any specific class. They get included
6
- # in the #Context, #Socket and #Poller classes.
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
- private
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 -1 == result_code
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
- if 'xs_init' == source || 'xs_socket' == source
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
- puts "else"
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
 
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module XS
4
- VERSION = "1.1.0"
4
+ VERSION = "1.2.0"
5
5
  end
data/spec/context_spec.rb CHANGED
@@ -1,4 +1,4 @@
1
- $: << "." # added for ruby 1.9.2 compatibilty; it doesn't include the current directory on the load path anymore
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 "gets EINVAL when option name is not recognized" do
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
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+
1
3
 
2
4
  require File.join(File.dirname(__FILE__), %w[spec_helper])
3
5
 
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+
1
3
  require File.join(File.dirname(__FILE__), %w[spec_helper])
2
4
 
3
5
  module XS
@@ -1,3 +1,4 @@
1
+ # encoding: utf-8
1
2
 
2
3
  require File.join(File.dirname(__FILE__), %w[spec_helper])
3
4
 
data/spec/poll_spec.rb CHANGED
@@ -1,4 +1,4 @@
1
- $: << "." # added for ruby 1.9.2 compatibilty; it doesn't include the current directory on the load path anymore
1
+ # encoding: utf-8
2
2
 
3
3
  require File.join(File.dirname(__FILE__), %w[spec_helper])
4
4
 
@@ -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.should == 0
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.should == 0
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
@@ -1,3 +1,4 @@
1
+ # encoding: utf-8
1
2
 
2
3
  require File.join(File.dirname(__FILE__), %w[spec_helper])
3
4
 
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
- context "using option XS::EVENTS" do
471
- it "should return a mask of events as a Fixnum" do
472
- array = []
473
- rc = socket.getsockopt(XS::EVENTS, array)
474
- rc.should == 0
475
- array[0].should be_a(Fixnum)
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.1.0
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-03-30 00:00:00.000000000 Z
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: &71177540 !ruby/object:Gem::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: *71177540
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: &71177190 !ruby/object:Gem::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: *71177190
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: &71176920 !ruby/object:Gem::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: *71176920
47
- description: Ruby FFI bindings for Crossroads I/O networking library.
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.6
136
+ rubygems_version: 1.8.23
134
137
  signing_key:
135
138
  specification_version: 3
136
- summary: Ruby FFI bindings for Crossroads I/O networking library.
139
+ summary: Ruby FFI bindings for Crossroads I/O messaging library.
137
140
  test_files: []
138
- has_rdoc: