thrift 0.4.0 → 0.5.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/Rakefile CHANGED
@@ -82,7 +82,7 @@ begin
82
82
  p.summary = "Ruby libraries for Thrift (a language-agnostic RPC system)"
83
83
  p.url = "http://incubator.apache.org/thrift/"
84
84
  p.include_rakefile = true
85
- p.version = "0.4.0"
85
+ p.version = "0.5.0"
86
86
  p.rubygems_version = ">= 1.2.0"
87
87
  end
88
88
 
data/lib/thrift/struct.rb CHANGED
@@ -21,7 +21,7 @@ require 'set'
21
21
 
22
22
  module Thrift
23
23
  module Struct
24
- def initialize(d={})
24
+ def initialize(d={}, &block)
25
25
  # get a copy of the default values to work on, removing defaults in favor of arguments
26
26
  fields_with_defaults = fields_with_default_values.dup
27
27
 
@@ -50,6 +50,8 @@ module Thrift
50
50
  instance_variable_set("@#{name}", (default_value.dup rescue default_value))
51
51
  end
52
52
  end
53
+
54
+ yield self if block_given?
53
55
  end
54
56
 
55
57
  def fields_with_default_values
@@ -97,12 +97,13 @@ module Thrift
97
97
  data = @handle.readpartial(sz)
98
98
  else
99
99
  # it's possible to interrupt select for something other than the timeout
100
- # so we need to ensure we've waited long enough
100
+ # so we need to ensure we've waited long enough, but not too long
101
101
  start = Time.now
102
- rd = nil # scoping
103
- loop do
104
- rd, = IO.select([@handle], nil, nil, @timeout)
105
- break if (rd and not rd.empty?) or Time.now - start >= @timeout
102
+ timespent = 0
103
+ rd = loop do
104
+ rd, = IO.select([@handle], nil, nil, @timeout - timespent)
105
+ timespent = Time.now - start
106
+ break rd if (rd and not rd.empty?) or timespent >= @timeout
106
107
  end
107
108
  if rd.nil? or rd.empty?
108
109
  raise TransportException.new(TransportException::TIMED_OUT, "Socket: Timed out reading #{sz} bytes from #{@desc}")
@@ -91,7 +91,7 @@ shared_examples_for "a socket" do
91
91
  it "should raise an error when read times out" do
92
92
  @socket.timeout = 0.5
93
93
  @socket.open
94
- IO.should_receive(:select).with([@handle], nil, nil, 0.5).at_least(1).times.and_return(nil)
94
+ IO.should_receive(:select).once {sleep(0.5); nil}
95
95
  lambda { @socket.read(17) }.should raise_error(Thrift::TransportException) { |e| e.type.should == Thrift::TransportException::TIMED_OUT }
96
96
  end
97
97
 
data/spec/struct_spec.rb CHANGED
@@ -31,13 +31,22 @@ class ThriftStructSpec < Spec::ExampleGroup
31
31
  end
32
32
 
33
33
  it "should initialize all fields to defaults" do
34
- struct = Foo.new
35
- struct.simple.should == 53
36
- struct.words.should == "words"
37
- struct.hello.should == Hello.new(:greeting => 'hello, world!')
38
- struct.ints.should == [1, 2, 2, 3]
39
- struct.complex.should be_nil
40
- struct.shorts.should == Set.new([5, 17, 239])
34
+ validate_default_arguments(Foo.new)
35
+ end
36
+
37
+ it "should initialize all fields to defaults and accept a block argument" do
38
+ Foo.new do |f|
39
+ validate_default_arguments(f)
40
+ end
41
+ end
42
+
43
+ def validate_default_arguments(object)
44
+ object.simple.should == 53
45
+ object.words.should == "words"
46
+ object.hello.should == Hello.new(:greeting => 'hello, world!')
47
+ object.ints.should == [1, 2, 2, 3]
48
+ object.complex.should be_nil
49
+ object.shorts.should == Set.new([5, 17, 239])
41
50
  end
42
51
 
43
52
  it "should not share default values between instances" do
data/thrift.gemspec CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{thrift}
5
- s.version = "0.4.0"
5
+ s.version = "0.5.0"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2.0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Kevin Ballard, Kevin Clark, Mark Slee"]
9
- s.date = %q{2010-09-21}
9
+ s.date = %q{2010-10-13}
10
10
  s.description = %q{Ruby libraries for Thrift (a language-agnostic RPC system)}
11
11
  s.email = ["kevin@sb.org", "kevin.clark@gmail.com", "mcslee@facebook.com"]
12
12
  s.extensions = ["ext/extconf.rb"]
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: thrift
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
4
+ hash: 11
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 4
8
+ - 5
9
9
  - 0
10
- version: 0.4.0
10
+ version: 0.5.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Kevin Ballard, Kevin Clark, Mark Slee
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-09-21 00:00:00 -07:00
18
+ date: 2010-10-13 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies: []
21
21