ione 1.1.0 → 1.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6792416cd267b6b77b7bbf83bc01f859fea177ac
4
- data.tar.gz: d43b10b535cda8dd755b1f7bdff981cf4e82afff
3
+ metadata.gz: 8edb1b899493ad38350a6bfaed1c021157fcfbaf
4
+ data.tar.gz: 39710eb4eec6a84c7212a5c838dd3d7be2f3d1e8
5
5
  SHA512:
6
- metadata.gz: 7087cb7dc5e2933e38f455558bb87d59bab197adfaf7d11361aacb950e70e25a6657d3cbf8dccbd6cfead120a2f33f2e0d4aa472054260752e0229834a3f154b
7
- data.tar.gz: 770774471964ac5d950ffa375508258a8eb3bbe54ce03a1f634946239c666724611398934491fe20ef427738d20e968be80a021a9ef000539ecaf19b8804cb29
6
+ metadata.gz: c0482a3411e1aebd9776501b049004ecc7dc90b4803ca0fe793517abc96a0fdf0afca3e70504c6e20bb198c8868df1dcad82694cf341c274ce6faa2bada82289
7
+ data.tar.gz: 91804377c9d4b5d80a1f7aa679de5fa07fab046b7ee9145344c77d550d63ac7ca0d57cd4117db585c41cb69852312b21a0ffa93cf8021af0c1a6cb072d4b5bc5
data/README.md CHANGED
@@ -29,6 +29,7 @@ The [examples](https://github.com/iconara/ione/tree/master/examples) directory h
29
29
  * [redis_client](https://github.com/iconara/ione/tree/master/examples/redis_client) is a more or less full featured Redis client that uses most of Ione's features.
30
30
  * [http_client](https://github.com/iconara/ione/tree/master/examples/http_client) is a simplistic HTTP client that uses Ione and [http_parser.rb](http://rubygems.org/gems/http_parser.rb) to make HTTP GET request.
31
31
  * [cql-rb](https://github.com/iconara/cql-rb) is a high performance Cassandra driver and where Ione was originally developed.
32
+ * [ione-rpc](https://github.com/iconara/ione-rpc) is a RPC framework built on Ione. It makes it reasonably easy to build networked applications without having to reinvent the wheel.
32
33
 
33
34
  # How to contribute
34
35
 
@@ -86,6 +86,7 @@ module Ione
86
86
  # futures
87
87
  def all(*futures)
88
88
  return resolved([]) if futures.empty?
89
+ return futures.first.map { |v| [v] } if futures.size == 1
89
90
  CombinedFuture.new(futures)
90
91
  end
91
92
 
@@ -97,6 +98,7 @@ module Ione
97
98
  # @return [Ione::Future] a future which represents the first completing future
98
99
  def first(*futures)
99
100
  return resolved if futures.empty?
101
+ return futures.first if futures.size == 1
100
102
  FirstFuture.new(futures)
101
103
  end
102
104
 
@@ -105,6 +107,7 @@ module Ione
105
107
  # @param [Object, nil] value the value of the created future
106
108
  # @return [Ione::Future] a resolved future
107
109
  def resolved(value=nil)
110
+ return ResolvedFuture::NIL if value.nil?
108
111
  ResolvedFuture.new(value)
109
112
  end
110
113
 
@@ -468,6 +471,8 @@ module Ione
468
471
 
469
472
  def on_failure
470
473
  end
474
+
475
+ NIL = new(nil)
471
476
  end
472
477
 
473
478
  # @private
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module Ione
4
- VERSION = '1.1.0'.freeze
4
+ VERSION = '1.1.2'.freeze
5
5
  end
@@ -613,6 +613,11 @@ module Ione
613
613
  it 'completes with an empty list when no futures are given' do
614
614
  Future.all.value.should == []
615
615
  end
616
+
617
+ it 'completes with a list of one item when a single future is given' do
618
+ f = Future.resolved(1)
619
+ Future.all(f).value.should == [1]
620
+ end
616
621
  end
617
622
  end
618
623
 
@@ -683,6 +688,10 @@ module Ione
683
688
  it 'completes with nil when no futures are given' do
684
689
  Future.first.value.should be_nil
685
690
  end
691
+
692
+ it 'completes with the value of the given future, when only one is given' do
693
+ Future.first(Future.resolved('foo')).value.should == 'foo'
694
+ end
686
695
  end
687
696
  end
688
697
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ione
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Theo Hultberg
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-19 00:00:00.000000000 Z
11
+ date: 2014-05-29 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Reactive programming framework for Ruby, painless evented IO, futures
14
14
  and an efficient byte buffer