[前][次][番号順一覧][スレッド一覧]

ruby-changes:23253

From: drbrain <ko1@a...>
Date: Thu, 12 Apr 2012 06:21:04 +0900 (JST)
Subject: [ruby-changes:23253] drbrain:r35304 (trunk): * lib/net/protocol.rb (module Net): Added ReadTimeout to match

drbrain	2012-04-12 06:20:51 +0900 (Thu, 12 Apr 2012)

  New Revision: 35304

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=35304

  Log:
    * lib/net/protocol.rb (module Net):  Added ReadTimeout to match
      OpenTimeout.  ReadTimeout is now raised by rbuf_fill instead of
      Timeout::Error to help users distinguish what type of timeout
      occurred.  [ruby-trunk - Feature #6088]
    * lib/net/pop.rb (module Net):  Updated documentation for ReadTimeout
      and OpenTimeout.
    * lib/net/http.rb (module Net):  ditto
    * lib/net/smtp.rb (module Net):  ditto
    * lib/net/telnet.rb (module Net):  Net::ReadTimeout is now raised in
      waitfor to match Net::Protocol.
    * test/net/http/test_http.rb:  Updated Timeout::Error expectation to
      Net::ReadTimeout.
    * test/net/ftp/test_ftp.rb:  ditto

  Modified files:
    trunk/ChangeLog
    trunk/lib/net/http.rb
    trunk/lib/net/pop.rb
    trunk/lib/net/protocol.rb
    trunk/lib/net/smtp.rb
    trunk/lib/net/telnet.rb
    trunk/test/net/ftp/test_ftp.rb
    trunk/test/net/http/test_http.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 35303)
+++ ChangeLog	(revision 35304)
@@ -1,3 +1,19 @@
+Thu Apr 12 06:15:44 2012  Eric Hodel  <drbrain@s...>
+
+	* lib/net/protocol.rb (module Net):  Added ReadTimeout to match
+	  OpenTimeout.  ReadTimeout is now raised by rbuf_fill instead of
+	  Timeout::Error to help users distinguish what type of timeout
+	  occurred.  [ruby-trunk - Feature #6088]
+	* lib/net/pop.rb (module Net):  Updated documentation for ReadTimeout
+	  and OpenTimeout.
+	* lib/net/http.rb (module Net):  ditto
+	* lib/net/smtp.rb (module Net):  ditto
+	* lib/net/telnet.rb (module Net):  Net::ReadTimeout is now raised in
+	  waitfor to match Net::Protocol.
+	* test/net/http/test_http.rb:  Updated Timeout::Error expectation to
+	  Net::ReadTimeout.
+	* test/net/ftp/test_ftp.rb:  ditto
+
 Thu Apr 12 05:27:01 2012  Eric Hodel  <drbrain@s...>
 
 	* lib/webrick/server.rb (module WEBrick::GenericServer):  A server
Index: lib/net/pop.rb
===================================================================
--- lib/net/pop.rb	(revision 35303)
+++ lib/net/pop.rb	(revision 35304)
@@ -498,12 +498,12 @@
 
     # Seconds to wait until a connection is opened.
     # If the POP3 object cannot open a connection within this time,
-    # it raises a TimeoutError exception.
+    # it raises a Net::OpenTimeout exception.
     attr_accessor :open_timeout
 
     # Seconds to wait until reading one block (by one read(1) call).
     # If the POP3 object cannot complete a read() within this time,
-    # it raises a TimeoutError exception.
+    # it raises a Net::ReadTimeout exception.
     attr_reader :read_timeout
 
     # Set the read timeout.
Index: lib/net/http.rb
===================================================================
--- lib/net/http.rb	(revision 35303)
+++ lib/net/http.rb	(revision 35304)
@@ -624,13 +624,13 @@
     # Number of seconds to wait for the connection to open. Any number
     # may be used, including Floats for fractional seconds. If the HTTP
     # object cannot open a connection in this many seconds, it raises a
-    # TimeoutError exception.
+    # Net::OpenTimeout exception.
     attr_accessor :open_timeout
 
     # Number of seconds to wait for one block to be read (via one read(2)
     # call). Any number may be used, including Floats for fractional
     # seconds. If the HTTP object cannot read data in this many seconds,
-    # it raises a TimeoutError exception.
+    # it raises a Net::ReadTimeout exception.
     attr_reader :read_timeout
 
     # Setter for the read_timeout attribute.
Index: lib/net/protocol.rb
===================================================================
--- lib/net/protocol.rb	(revision 35303)
+++ lib/net/protocol.rb	(revision 35304)
@@ -44,9 +44,20 @@
   class ProtoCommandError      < ProtocolError; end
   class ProtoRetriableError    < ProtocolError; end
   ProtocRetryError = ProtoRetriableError
+
+  ##
+  # OpenTimeout, a subclass of Timeout::Error, is raised if a connection cannot
+  # be created within the open_timeout.
+
   class OpenTimeout            < Timeout::Error; end
 
+  ##
+  # ReadTimeout, a subclass of Timeout::Error, is raised if a chunk of the
+  # response cannot be read within the read_timeout.
 
+  class ReadTimeout            < Timeout::Error; end
+
+
   class BufferedIO   #:nodoc: internal use only
     def initialize(io)
       @io = io
@@ -144,7 +155,7 @@
         if IO.select([@io], nil, nil, @read_timeout)
           retry
         else
-          raise Timeout::Error
+          raise Net::ReadTimeout
         end
       rescue IO::WaitWritable
         # OpenSSL::Buffering#read_nonblock may fail with IO::WaitWritable.
@@ -152,7 +163,7 @@
         if IO.select(nil, [@io], nil, @read_timeout)
           retry
         else
-          raise Timeout::Error
+          raise Net::ReadTimeout
         end
       end
     end
Index: lib/net/smtp.rb
===================================================================
--- lib/net/smtp.rb	(revision 35303)
+++ lib/net/smtp.rb	(revision 35304)
@@ -364,12 +364,12 @@
 
     # Seconds to wait while attempting to open a connection.
     # If the connection cannot be opened within this time, a
-    # TimeoutError is raised.
+    # Net::OpenTimeout is raised.
     attr_accessor :open_timeout
 
     # Seconds to wait while reading one block (by one read(2) call).
     # If the read(2) call does not complete within this time, a
-    # TimeoutError is raised.
+    # Net::ReadTimeout is raised.
     attr_reader :read_timeout
 
     # Set the number of seconds to wait until timing-out a read(2)
@@ -448,8 +448,9 @@
     # * Net::SMTPSyntaxError
     # * Net::SMTPFatalError
     # * Net::SMTPUnknownError
+    # * Net::OpenTimeout
+    # * Net::ReadTimeout
     # * IOError
-    # * TimeoutError
     #
     def SMTP.start(address, port = nil, helo = 'localhost',
                    user = nil, secret = nil, authtype = nil,
@@ -509,8 +510,9 @@
     # * Net::SMTPSyntaxError
     # * Net::SMTPFatalError
     # * Net::SMTPUnknownError
+    # * Net::OpenTimeout
+    # * Net::ReadTimeout
     # * IOError
-    # * TimeoutError
     #
     def start(helo = 'localhost',
               user = nil, secret = nil, authtype = nil)   # :yield: smtp
@@ -653,8 +655,8 @@
     # * Net::SMTPSyntaxError
     # * Net::SMTPFatalError
     # * Net::SMTPUnknownError
+    # * Net::ReadTimeout
     # * IOError
-    # * TimeoutError
     #
     def send_message(msgstr, from_addr, *to_addrs)
       raise IOError, 'closed session' unless @socket
@@ -706,8 +708,8 @@
     # * Net::SMTPSyntaxError
     # * Net::SMTPFatalError
     # * Net::SMTPUnknownError
+    # * Net::ReadTimeout
     # * IOError
-    # * TimeoutError
     #
     def open_message_stream(from_addr, *to_addrs, &block)   # :yield: stream
       raise IOError, 'closed session' unless @socket
Index: lib/net/telnet.rb
===================================================================
--- lib/net/telnet.rb	(revision 35303)
+++ lib/net/telnet.rb	(revision 35304)
@@ -243,15 +243,15 @@
     #
     # Timeout:: the number of seconds to wait before timing out both the
     #           initial attempt to connect to host (in this constructor),
-    #           and all attempts to read data from the host (in #waitfor(),
-    #           #cmd(), and #login()).  Exceeding this timeout causes a
-    #           TimeoutError to be raised.  The default value is 10 seconds.
+    #           which raises a Net::OpenTimeout, and all attempts to read data
+    #           from the host, which raises a Net::ReadTimeout (in #waitfor(),
+    #           #cmd(), and #login()).  The default value is 10 seconds.
     #           You can disable the timeout by setting this value to false.
     #           In this case, the connect attempt will eventually timeout
     #           on the underlying connect(2) socket call with an
     #           Errno::ETIMEDOUT error (but generally only after a few
     #           minutes), but other attempts to read data from the host
-    #           will hand indefinitely if no data is forthcoming.
+    #           will hang indefinitely if no data is forthcoming.
     #
     # Waittime:: the amount of time to wait after seeing what looks like a
     #            prompt (that is, received data that matches the Prompt
@@ -554,7 +554,7 @@
       rest = ''
       until(prompt === line and not IO::select([@sock], nil, nil, waittime))
         unless IO::select([@sock], nil, nil, time_out)
-          raise TimeoutError, "timed out while waiting for more data"
+          raise Net::ReadTimeout, "timed out while waiting for more data"
         end
         begin
           c = @sock.readpartial(1024 * 1024)
Index: test/net/http/test_http.rb
===================================================================
--- test/net/http/test_http.rb	(revision 35303)
+++ test/net/http/test_http.rb	(revision 35304)
@@ -204,7 +204,7 @@
       conn.open_timeout = 0.01
 
       th = Thread.new do
-        assert_raise(Timeout::Error) {
+        assert_raise(Net::ReadTimeout) {
           conn.get('/')
         }
       end
Index: test/net/ftp/test_ftp.rb
===================================================================
--- test/net/ftp/test_ftp.rb	(revision 35303)
+++ test/net/ftp/test_ftp.rb	(revision 35304)
@@ -190,7 +190,7 @@
         ftp = Net::FTP.new
         ftp.read_timeout = 0.2
         ftp.connect(SERVER_ADDR, server.port)
-        assert_raise(Timeout::Error) do
+        assert_raise(Net::ReadTimeout) do
           ftp.login
         end
         assert_match(/\AUSER /, commands.shift)
@@ -283,7 +283,7 @@
         assert_match(/\AUSER /, commands.shift)
         assert_match(/\APASS /, commands.shift)
         assert_equal("TYPE I\r\n", commands.shift)
-        assert_raise(Timeout::Error) do
+        assert_raise(Net::ReadTimeout) do
           ftp.list
         end
         assert_equal("TYPE A\r\n", commands.shift)
@@ -393,7 +393,7 @@
         assert_match(/\APASS /, commands.shift)
         assert_equal("TYPE I\r\n", commands.shift)
         buf = ""
-        assert_raise(Timeout::Error) do
+        assert_raise(Net::ReadTimeout) do
           ftp.retrbinary("RETR foo", 1024) do |s|
             buf << s
           end

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]