From: Kevin Clark Date: Thu, 26 Jun 2008 18:35:15 +0000 (+0000) Subject: rb: Add some additional error handling to Thrift::Socket [THRIFT-53] X-Git-Tag: 0.2.0~493 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=5da153b36a91c9ea6bda9a717dd1f5e55639addc;p=common%2Fthrift.git rb: Add some additional error handling to Thrift::Socket [THRIFT-53] Author: Kevin Ballard git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@671979 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/lib/rb/lib/thrift/transport/socket.rb b/lib/rb/lib/thrift/transport/socket.rb index ea3175c3..e3981fe3 100644 --- a/lib/rb/lib/thrift/transport/socket.rb +++ b/lib/rb/lib/thrift/transport/socket.rb @@ -29,10 +29,11 @@ module Thrift end def open? - !@handle.nil? + !@handle.nil? and !@handle.closed? end def write(str) + raise IOError, "closed stream" unless open? begin @handle.write(str) rescue StandardError @@ -43,6 +44,7 @@ module Thrift end def read(sz, partial=false) + raise IOError, "closed stream" unless open? begin if partial data = @handle.readpartial(sz) diff --git a/lib/rb/spec/socket_spec_shared.rb b/lib/rb/spec/socket_spec_shared.rb index 448a5169..a0092e18 100644 --- a/lib/rb/spec/socket_spec_shared.rb +++ b/lib/rb/spec/socket_spec_shared.rb @@ -49,4 +49,12 @@ shared_examples_for "a socket" do lambda { @socket.write("fail") }.should raise_error @socket.should_not be_open end + + it "should raise an error when the stream is closed" do + @socket.open + @handle.stub!(:closed?).and_return(true) + @socket.should_not be_open + lambda { @socket.write("fail") }.should raise_error(IOError, "closed stream") + lambda { @socket.read(10) }.should raise_error(IOError, "closed stream") + end end