mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	update readpartial document.
don't try read timeout on Windows. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7752 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
		
							parent
							
								
									563a79c756
								
							
						
					
					
						commit
						16b5ba2707
					
				
					 2 changed files with 8 additions and 6 deletions
				
			
		
							
								
								
									
										12
									
								
								io.c
									
										
									
									
									
								
							
							
						
						
									
										12
									
								
								io.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -1241,7 +1241,7 @@ io_getpartial(int argc, VALUE *argv, VALUE io)
 | 
			
		|||
 *  readpartial is designed for streams such as pipe, socket, tty, etc.
 | 
			
		||||
 *  It blocks only when no data immediately available.
 | 
			
		||||
 *  This means that it blocks only when following all conditions hold.
 | 
			
		||||
 *  * the stdio buffer in the IO object is empty.
 | 
			
		||||
 *  * the buffer in the IO object is empty.
 | 
			
		||||
 *  * the content of the stream is empty.
 | 
			
		||||
 *  * the stream is not reached to EOF.
 | 
			
		||||
 *
 | 
			
		||||
| 
						 | 
				
			
			@ -1250,23 +1250,23 @@ io_getpartial(int argc, VALUE *argv, VALUE io)
 | 
			
		|||
 *  If EOF is reached, readpartial raises EOFError.
 | 
			
		||||
 *
 | 
			
		||||
 *  When readpartial doesn't blocks, it returns or raises immediately.
 | 
			
		||||
 *  If the stdio buffer is not empty, it returns the data in the buffer.
 | 
			
		||||
 *  If the buffer is not empty, it returns the data in the buffer.
 | 
			
		||||
 *  Otherwise if the stream has some content,
 | 
			
		||||
 *  it returns the data in the stream. 
 | 
			
		||||
 *  Otherwise if the stream is reached to EOF, it raises EOFError.
 | 
			
		||||
 *
 | 
			
		||||
 *     r, w = IO.pipe           #               stdio buffer    pipe content
 | 
			
		||||
 *     r, w = IO.pipe           #               buffer          pipe content
 | 
			
		||||
 *     w << "abc"               #               ""              "abc".
 | 
			
		||||
 *     r.readpartial(4096)      #=> "abc"       ""              ""
 | 
			
		||||
 *     r.readpartial(4096)      # blocks because buffer and pipe is empty.
 | 
			
		||||
 *
 | 
			
		||||
 *     r, w = IO.pipe           #               stdio buffer    pipe content
 | 
			
		||||
 *     r, w = IO.pipe           #               buffer          pipe content
 | 
			
		||||
 *     w << "abc"               #               ""              "abc"
 | 
			
		||||
 *     w.close                  #               ""              "abc" EOF
 | 
			
		||||
 *     r.readpartial(4096)      #=> "abc"       ""              EOF
 | 
			
		||||
 *     r.readpartial(4096)      # raises EOFError
 | 
			
		||||
 *
 | 
			
		||||
 *     r, w = IO.pipe           #               stdio buffer    pipe content
 | 
			
		||||
 *     r, w = IO.pipe           #               buffer          pipe content
 | 
			
		||||
 *     w << "abc\ndef\n"        #               ""              "abc\ndef\n"
 | 
			
		||||
 *     r.gets                   #=> "abc\n"     "def\n"         ""
 | 
			
		||||
 *     w << "ghi\n"             #               "def\n"         "ghi\n"
 | 
			
		||||
| 
						 | 
				
			
			@ -1277,7 +1277,7 @@ io_getpartial(int argc, VALUE *argv, VALUE io)
 | 
			
		|||
 *  It blocks even if the nonblocking-flag is set.
 | 
			
		||||
 *
 | 
			
		||||
 *  Also note that readpartial behaves similar to sysread in blocking mode.
 | 
			
		||||
 *  The behavior is identical when the stdio buffer is empty.
 | 
			
		||||
 *  The behavior is identical when the buffer is empty.
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -43,6 +43,7 @@ class TestReadPartial < Test::Unit::TestCase
 | 
			
		|||
    }
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  if !File::ALT_SEPARATOR # read on pipe cannot timeout on Windows.
 | 
			
		||||
  def test_open_pipe
 | 
			
		||||
    pipe {|r, w|
 | 
			
		||||
      w << 'abc'
 | 
			
		||||
| 
						 | 
				
			
			@ -67,6 +68,7 @@ class TestReadPartial < Test::Unit::TestCase
 | 
			
		|||
      }
 | 
			
		||||
    }
 | 
			
		||||
  end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue