celluloid-io 0.17.1 → 0.17.2

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: 75a2412be5312afe0d2f8e6d8004a824998be990
4
- data.tar.gz: 4b175006119bc9d8cfe474afedb6d40b1dabe4cf
3
+ metadata.gz: f22ca0d4783bd9c3d65491e35c23cb265f9f5921
4
+ data.tar.gz: 19eb07a8af91273aa9d02d0a13d8b8d7cc7fd42e
5
5
  SHA512:
6
- metadata.gz: f9fa09d4e1d18673c8da2f5162606b87da69f74b985255de5445abd0490fe605fa7a451f50c28bf48931ba2a867c4347ec868ce03566bfe10e222c21a9eba21b
7
- data.tar.gz: b25eff20154ab82f905cc801e79df481b07f9e205c545982528d6d5ad4102fb9f7d75abd4a1c2a3753e0e5926ab86bf7985383b9e75c1439802815e7f7b6f9ab
6
+ metadata.gz: 7461a398eda2e60590099d4794bb6bd7bc6d1854b1e69acfea49ef9ff898ba537d25025a89add4582aecb15b276b34bbdf0d84c2d4ba0100a3eefa23f3724476
7
+ data.tar.gz: 55426f5b1593876194494c4f193b824daddeaa3679493c84b36d5d8887e4c4f715aa710e4239fdb757065a0af0ebcf48585986af6d50cb06a1d612e5f76e5c7e
data/.rubocop.yml ADDED
@@ -0,0 +1,2 @@
1
+ inherit_from:
2
+ - culture/rubocop/rubocop.yml
data/.travis.yml CHANGED
@@ -1,34 +1,41 @@
1
1
  script: rake ci
2
2
  language: ruby
3
3
  rvm:
4
- - 2.2.0
5
- - 2.2.2
4
+ - rbx-2
6
5
  - jruby
6
+ - 2.2.2
7
+ - 2.2.0
8
+ - 2.1.4
9
+ - 2.0.0
10
+ - 1.9.3
7
11
  - ruby-head
8
12
  - jruby-head
9
- - rbx-2
10
-
11
- # TODO: Put these back:
12
- # * CELLULOID_TASK_CLASS=Fibered
13
- # * CELLULOID_TASK_CLASS=Threaded
14
- # For right now the imporant thing is to test BACKPORTED mode:
15
13
 
16
14
  matrix:
17
15
  fast_finish: true
18
16
  allow_failures:
17
+ - rvm: 1.9.3
19
18
  - rvm: ruby-head
20
19
  - rvm: jruby-head
21
20
  - env: CELLULOID_BACKPORTED=true
21
+ - env: CELLULOID_BACKPORTED=false CELLULOID_TASK_CLASS=Threaded
22
+ - env: CELLULOID_BACKPORTED=true CELLULOID_TASK_CLASS=Threaded
22
23
 
23
24
  env:
25
+ global:
26
+ - NUMBER_OF_PROCESSORS=4 CELLULOID_CONFIG_FILE=.env-ci
24
27
  matrix:
25
28
  - CELLULOID_BACKPORTED=true
26
29
  - CELLULOID_BACKPORTED=false
27
- global:
28
- - NUMBER_OF_PROCESSORS=2 CELLULOID_CONFIG_FILE=.env-ci
30
+ - CELLULOID_BACKPORTED=false CELLULOID_TASK_CLASS=Threaded
31
+ - CELLULOID_BACKPORTED=true CELLULOID_TASK_CLASS=Threaded
29
32
 
30
33
  notifications:
31
34
  irc: "irc.freenode.org#celluloid"
32
35
 
36
+ before_install:
37
+ # Only use 1 job until Travis fixes the rbx --jobs issue.
38
+ - if [ "$TRAVIS_RUBY_VERSION" == "rbx-2" ] ; then export BUNDLE_JOBS=1 ; else export BUNDLE_JOBS=4; fi
39
+
33
40
  sudo: false
34
41
  install: bundle install --without=development
data/CHANGES.md CHANGED
@@ -1,5 +1,15 @@
1
- HEAD
1
+ 0.17.2 (2015-09-30)
2
2
  -----
3
+ * Revamped test suite, using shared RSpec configuration layer provided by Celluloid itself.
4
+ * Updated gem dependencies provided by Celluloid::Sync... extraneous gems removed, or marked as development dependencies.
5
+
6
+ 0.17.1 (2015-08-24)
7
+ -----
8
+ * Minor bug fixes. Synchronize gem dependencies.
9
+
10
+ 0.17.0 (2015-08-07)
11
+ -----
12
+ * Compatibility with Celluloid 0.17.0+
3
13
  * Adjust class name for Celluloid::Mailbox::Evented, per 0.17.0 of Celluloid.
4
14
 
5
15
  0.16.2 (2015-01-30)
data/Gemfile CHANGED
@@ -1,4 +1,3 @@
1
1
  require File.expand_path("../culture/sync", __FILE__)
2
2
 
3
3
  Celluloid::Sync::Gemfile[self]
4
-
data/Guardfile CHANGED
@@ -1,5 +1,5 @@
1
- guard 'rspec', :cli => '--format documentation' do
1
+ guard "rspec", cli: "--format documentation" do
2
2
  watch(%r{^spec/.+_spec\.rb$})
3
3
  watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
4
- watch('spec/spec_helper.rb') { "spec/" }
4
+ watch("spec/spec_helper.rb") { "spec/" }
5
5
  end
data/Rakefile CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env rake
2
- require 'bundler/gem_tasks'
2
+ require "bundler/gem_tasks"
3
3
  Dir["tasks/**/*.task"].each { |task| load task }
4
4
 
5
- task :default => :spec
6
- task :ci => %w(spec benchmark)
5
+ task default: :spec
6
+ task ci: %w(spec benchmark)
data/benchmarks/actor.rb CHANGED
@@ -5,7 +5,8 @@ require 'bundler/setup'
5
5
  require 'celluloid/io'
6
6
  require 'benchmark/ips'
7
7
 
8
- class ExampleActor
8
+ #de TODO: Consolidate with Celluloid benchmarking actor.
9
+ class BenchmarkingActor
9
10
  include Celluloid::IO
10
11
 
11
12
  def initialize
@@ -23,7 +24,7 @@ class ExampleActor
23
24
  end
24
25
  end
25
26
 
26
- example_actor = ExampleActor.new
27
+ example_actor = BenchmarkingActor.new
27
28
  mailbox = Celluloid::IO::Mailbox.new
28
29
 
29
30
  latch_in, latch_out = Queue.new, Queue.new
@@ -36,7 +37,7 @@ latch = Thread.new do
36
37
  end
37
38
 
38
39
  Benchmark.ips do |ips|
39
- ips.report("spawn") { ExampleActor.new.terminate }
40
+ ips.report("spawn") { BenchmarkingActor.new.terminate }
40
41
 
41
42
  ips.report("calls") { example_actor.example_method }
42
43
 
data/celluloid-io.gemspec CHANGED
@@ -4,21 +4,21 @@ require File.expand_path("../culture/sync", __FILE__)
4
4
  Gem::Specification.new do |gem|
5
5
  gem.name = "celluloid-io"
6
6
  gem.version = Celluloid::IO::VERSION
7
- gem.license = 'MIT'
7
+ gem.license = "MIT"
8
8
  gem.authors = ["Tony Arcieri", "Donovan Keme"]
9
9
  gem.email = ["tony.arcieri@gmail.com", "code@extremist.digital"]
10
10
  gem.description = "Evented IO for Celluloid actors"
11
11
  gem.summary = "Celluloid::IO allows you to monitor multiple IO objects within a Celluloid actor"
12
12
  gem.homepage = "http://github.com/celluloid/celluloid-io"
13
13
 
14
- gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
14
+ gem.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
15
15
  gem.files = `git ls-files`.split("\n")
16
16
  gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
17
  gem.require_paths = ["lib"]
18
18
 
19
19
  Celluloid::Sync::Gemspec[gem]
20
-
21
- gem.add_dependency 'nio4r', '>= 1.1'
22
20
 
23
- gem.add_development_dependency 'rb-fsevent', '~> 0.9.1' if RUBY_PLATFORM =~ /darwin/
21
+ gem.add_dependency "nio4r", ">= 1.1"
22
+
23
+ gem.add_development_dependency "rb-fsevent", "~> 0.9.1" if RUBY_PLATFORM =~ /darwin/
24
24
  end
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'rubygems'
4
- require 'bundler/setup'
5
- require 'celluloid/io'
3
+ require "rubygems"
4
+ require "bundler/setup"
5
+ require "celluloid/io"
6
6
 
7
7
  class EchoClient
8
8
  include Celluloid::IO
@@ -18,7 +18,6 @@ class EchoClient
18
18
  @socket.write(s)
19
19
  @socket.readpartial(4096)
20
20
  end
21
-
22
21
  end
23
22
 
24
23
  client = EchoClient.new("127.0.0.1", 1234)
@@ -2,8 +2,8 @@
2
2
  #
3
3
  # Run this as: bundle exec examples/echo_server.rb
4
4
 
5
- require 'bundler/setup'
6
- require 'celluloid/io'
5
+ require "bundler/setup"
6
+ require "celluloid/io"
7
7
 
8
8
  class EchoServer
9
9
  include Celluloid::IO
@@ -1,5 +1,5 @@
1
- require 'bundler/setup'
2
- require 'celluloid/io'
1
+ require "bundler/setup"
2
+ require "celluloid/io"
3
3
 
4
4
  class EchoUNIXClient
5
5
  include Celluloid::IO
@@ -22,7 +22,6 @@ class EchoUNIXClient
22
22
  def finalize
23
23
  @socket.close if @socket
24
24
  end
25
-
26
25
  end
27
26
 
28
27
  c = EchoUNIXClient.new("/tmp/sock_test")
@@ -1,5 +1,5 @@
1
- require 'bundler/setup'
2
- require 'celluloid/io'
1
+ require "bundler/setup"
2
+ require "celluloid/io"
3
3
 
4
4
  class EchoUNIXServer
5
5
  include Celluloid::IO
@@ -38,7 +38,6 @@ class EchoUNIXServer
38
38
  File.delete(@socket_path)
39
39
  end
40
40
  end
41
-
42
41
  end
43
42
 
44
43
  supervisor = EchoUNIXServer.supervise("/tmp/sock_test")
data/lib/celluloid/io.rb CHANGED
@@ -1,19 +1,19 @@
1
- require 'celluloid/io/version'
1
+ require "celluloid/io/version"
2
2
 
3
- require 'celluloid'
4
- require 'celluloid/io/dns_resolver'
5
- require 'celluloid/io/mailbox'
6
- require 'celluloid/io/reactor'
7
- require 'celluloid/io/stream'
3
+ require "celluloid"
4
+ require "celluloid/io/dns_resolver"
5
+ require "celluloid/io/mailbox"
6
+ require "celluloid/io/reactor"
7
+ require "celluloid/io/stream"
8
8
 
9
- require 'celluloid/io/tcp_server'
10
- require 'celluloid/io/tcp_socket'
11
- require 'celluloid/io/udp_socket'
12
- require 'celluloid/io/unix_server'
13
- require 'celluloid/io/unix_socket'
9
+ require "celluloid/io/tcp_server"
10
+ require "celluloid/io/tcp_socket"
11
+ require "celluloid/io/udp_socket"
12
+ require "celluloid/io/unix_server"
13
+ require "celluloid/io/unix_socket"
14
14
 
15
- require 'celluloid/io/ssl_server'
16
- require 'celluloid/io/ssl_socket'
15
+ require "celluloid/io/ssl_server"
16
+ require "celluloid/io/ssl_socket"
17
17
 
18
18
  module Celluloid
19
19
  # Actors with evented IO support
@@ -30,13 +30,13 @@ module Celluloid
30
30
  actor = Thread.current[:celluloid_actor]
31
31
  actor && actor.mailbox.is_a?(Celluloid::IO::Mailbox)
32
32
  end
33
-
33
+
34
34
  def self.try_convert(src)
35
35
  ::IO.try_convert(src)
36
36
  end
37
37
 
38
38
  def self.copy_stream(src, dst, copy_length = nil, src_offset = nil)
39
- raise NotImplementedError, "length/offset not supported" if copy_length || src_offset
39
+ fail NotImplementedError, "length/offset not supported" if copy_length || src_offset
40
40
 
41
41
  src, dst = try_convert(src), try_convert(dst)
42
42
 
@@ -1,5 +1,5 @@
1
- require 'ipaddr'
2
- require 'resolv'
1
+ require "ipaddr"
2
+ require "resolv"
3
3
 
4
4
  module Celluloid
5
5
  module IO
@@ -35,7 +35,7 @@ module Celluloid
35
35
  def resolve(hostname)
36
36
  if host = resolve_hostname(hostname)
37
37
  unless ip_address = resolve_host(host)
38
- raise Resolv::ResolvError, "invalid entry in hosts file: #{host}"
38
+ fail Resolv::ResolvError, "invalid entry in hosts file: #{host}"
39
39
  end
40
40
  return ip_address
41
41
  end
@@ -61,7 +61,8 @@ module Celluloid
61
61
  # Resolv::Hosts#getaddresses pushes onto a stack
62
62
  # so since we want the first occurance, simply
63
63
  # pop off the stack.
64
- resolv.getaddresses(hostname).pop rescue nil
64
+ resolv.getaddresses(hostname).pop
65
+ rescue
65
66
  end
66
67
 
67
68
  def resolv
@@ -81,16 +82,14 @@ module Celluloid
81
82
  end
82
83
 
83
84
  def resolve_ip(klass, host)
84
- begin
85
- klass.create(host)
86
- rescue ArgumentError
87
- end
85
+ klass.create(host)
86
+ rescue ArgumentError
88
87
  end
89
88
 
90
89
  private
91
90
 
92
91
  def get_address(host)
93
- Resolv::Hosts.new(host).get_address.
92
+ Resolv::Hosts.new(host).getaddress
94
93
  rescue
95
94
  end
96
95
  end
@@ -1,4 +1,4 @@
1
- require 'nio'
1
+ require "nio"
2
2
 
3
3
  module Celluloid
4
4
  module IO
@@ -29,24 +29,24 @@ module Celluloid
29
29
  # Wait for the given IO operation to complete
30
30
  def wait(io, set)
31
31
  # zomg ugly type conversion :(
32
- unless io.is_a?(::IO) or io.is_a?(OpenSSL::SSL::SSLSocket)
32
+ unless io.is_a?(::IO) || io.is_a?(OpenSSL::SSL::SSLSocket)
33
33
  if io.respond_to? :to_io
34
34
  io = io.to_io
35
35
  elsif ::IO.respond_to? :try_convert
36
36
  io = ::IO.try_convert(io)
37
37
  end
38
38
 
39
- raise TypeError, "can't convert #{io.class} into IO" unless io.is_a?(::IO)
39
+ fail TypeError, "can't convert #{io.class} into IO" unless io.is_a?(::IO)
40
40
  end
41
41
 
42
42
  monitor = @selector.register(io, set)
43
43
  monitor.value = Task.current
44
-
44
+
45
45
  begin
46
46
  Task.suspend :iowait
47
47
  ensure
48
- # In all cases we want to ensure that the monitor is closed once we
49
- # have woken up. However, in some cases, the monitor is already
48
+ # In all cases we want to ensure that the monitor is closed once we
49
+ # have woken up. However, in some cases, the monitor is already
50
50
  # invalid, e.g. in the case that we are terminating. We catch this
51
51
  # case explicitly.
52
52
  monitor.close
@@ -1,4 +1,4 @@
1
- require 'socket'
1
+ require "socket"
2
2
 
3
3
  module Celluloid
4
4
  module IO
@@ -33,4 +33,3 @@ module Celluloid
33
33
  end
34
34
  end
35
35
  end
36
-
@@ -1,4 +1,4 @@
1
- require 'openssl'
1
+ require "openssl"
2
2
 
3
3
  module Celluloid
4
4
  module IO
@@ -7,19 +7,19 @@ module Celluloid
7
7
  extend Forwardable
8
8
 
9
9
  def_delegators :@socket,
10
- :read_nonblock,
11
- :write_nonblock,
12
- :close,
13
- :closed?,
14
- :cert,
15
- :cipher,
16
- :client_ca,
17
- :peeraddr,
18
- :peer_cert,
19
- :peer_cert_chain,
20
- :post_connection_check,
21
- :verify_result,
22
- :sync_close=
10
+ :read_nonblock,
11
+ :write_nonblock,
12
+ :close,
13
+ :closed?,
14
+ :cert,
15
+ :cipher,
16
+ :client_ca,
17
+ :peeraddr,
18
+ :peer_cert,
19
+ :peer_cert_chain,
20
+ :post_connection_check,
21
+ :verify_result,
22
+ :sync_close=
23
23
 
24
24
  def initialize(io, ctx = OpenSSL::SSL::SSLContext.new)
25
25
  super()
@@ -47,7 +47,9 @@ module Celluloid
47
47
  retry
48
48
  end
49
49
 
50
- def to_io; @socket; end
50
+ def to_io
51
+ @socket
52
+ end
51
53
  end
52
54
  end
53
55
  end
@@ -1,5 +1,5 @@
1
- require 'socket'
2
- require 'resolv'
1
+ require "socket"
2
+ require "resolv"
3
3
 
4
4
  module Celluloid
5
5
  module IO
@@ -12,7 +12,7 @@ module Celluloid
12
12
 
13
13
  # Open a TCP socket, yielding it to the given block and closing it
14
14
  # automatically when done (if a block is given)
15
- def self.open(*args, &block)
15
+ def self.open(*args, &_block)
16
16
  sock = new(*args)
17
17
  return sock unless block_given?
18
18
 
@@ -41,7 +41,7 @@ module Celluloid
41
41
  @socket = remote_host
42
42
  return
43
43
  elsif remote_port.nil?
44
- raise ArgumentError, "wrong number of arguments (1 for 2)"
44
+ fail ArgumentError, "wrong number of arguments (1 for 2)"
45
45
  end
46
46
 
47
47
  # Is it an IPv4 address?
@@ -61,7 +61,7 @@ module Celluloid
61
61
  # Guess it's not an IP address, so let's try DNS
62
62
  unless @addr
63
63
  addrs = Array(DNSResolver.new.resolve(remote_host))
64
- raise Resolv::ResolvError, "DNS result has no information for #{remote_host}" if addrs.empty?
64
+ fail Resolv::ResolvError, "DNS result has no information for #{remote_host}" if addrs.empty?
65
65
 
66
66
  # Pseudorandom round-robin DNS support :/
67
67
  @addr = addrs[rand(addrs.size)]
@@ -72,7 +72,7 @@ module Celluloid
72
72
  family = Socket::AF_INET
73
73
  when Resolv::IPv6
74
74
  family = Socket::AF_INET6
75
- else raise ArgumentError, "unsupported address class: #{@addr.class}"
75
+ else fail ArgumentError, "unsupported address class: #{@addr.class}"
76
76
  end
77
77
 
78
78
  @socket = Socket.new(family, Socket::SOCK_STREAM, 0)
@@ -88,7 +88,7 @@ module Celluloid
88
88
  # HAX: for some reason we need to finish_connect ourselves on JRuby
89
89
  # This logic is unnecessary but JRuby still throws Errno::EINPROGRESS
90
90
  # if we retry the non-blocking connect instead of just finishing it
91
- retry unless RUBY_PLATFORM == 'java' && @socket.to_channel.finish_connect
91
+ retry unless RUBY_PLATFORM == "java" && @socket.to_channel.finish_connect
92
92
  rescue Errno::EISCONN
93
93
  # We're now connected! Yay exceptions for flow control
94
94
  # NOTE: This is the approach the Ruby stdlib docs suggest ;_;
@@ -101,14 +101,14 @@ module Celluloid
101
101
 
102
102
  # Receives a message
103
103
  def recv(maxlen, flags = nil)
104
- raise NotImplementedError, "flags not supported" if flags && !flags.zero?
104
+ fail NotImplementedError, "flags not supported" if flags && !flags.zero?
105
105
  readpartial(maxlen)
106
106
  end
107
107
 
108
108
  # Send a message
109
109
  def send(msg, flags, dest_sockaddr = nil)
110
- raise NotImplementedError, "dest_sockaddr not supported" if dest_sockaddr
111
- raise NotImplementedError, "flags not supported" unless flags.zero?
110
+ fail NotImplementedError, "dest_sockaddr not supported" if dest_sockaddr
111
+ fail NotImplementedError, "flags not supported" unless flags.zero?
112
112
  write(msg)
113
113
  end
114
114
  end