diff options
author | Eric Wong <e@80x24.org> | 2015-04-01 23:19:32 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2015-04-01 23:35:23 +0000 |
commit | adbf9a03518a94932e951c231852dffc63671432 (patch) | |
tree | 94719c983e836ad01618803413403337a75ad379 | |
parent | 3c3ee6b78ab53478731d86fd99b8f9d6dc2d31a7 (diff) | |
download | yahns-adbf9a03518a94932e951c231852dffc63671432.tar.gz |
This will allow us to write arrays for chunked output without unnecessary data copies.
-rw-r--r-- | lib/yahns/tmpio.rb | 1 | ||||
-rw-r--r-- | test/test_tmpio.rb | 20 |
2 files changed, 21 insertions, 0 deletions
diff --git a/lib/yahns/tmpio.rb b/lib/yahns/tmpio.rb index f0ddd2f..d25d5e8 100644 --- a/lib/yahns/tmpio.rb +++ b/lib/yahns/tmpio.rb @@ -7,6 +7,7 @@ require 'tmpdir' # well with unlinked files. This one is much shorter, easier # to understand, and slightly faster (no delegation). class Yahns::TmpIO < File # :nodoc: + include Kgio::PipeMethods # creates and returns a new File object. The File is unlinked # immediately, switched to binary mode, and userspace output diff --git a/test/test_tmpio.rb b/test/test_tmpio.rb new file mode 100644 index 0000000..79c9f32 --- /dev/null +++ b/test/test_tmpio.rb @@ -0,0 +1,20 @@ +# -*- encoding: binary -*- +# Copyright (C) 2009-2015 all contributors <yahns-public@yhbt.net> +# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-2.0.txt) +require_relative 'helper' + +class TestTmpIO < Testcase + def test_writev + a, b = UNIXSocket.pair + a.extend Kgio::PipeMethods + tmpio = Yahns::TmpIO.new(Dir.tmpdir) + ary = [ "hello\n".freeze, "world\n".freeze ].freeze + tmpio.kgio_trywritev(ary) + a.trysendfile(tmpio, 0, 12) + assert_equal "hello\nworld\n", b.read(12) + ensure + b.close + a.close + tmpio.close + end +end |