diff options
author | Eric Wong <normalperson@yhbt.net> | 2013-10-12 21:32:44 +0000 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2013-10-12 21:32:44 +0000 |
commit | f4dcfabd826ce8a43b9d4c41706fa8b95fb81acd (patch) | |
tree | f5328ebdea5af1642852f5932562ffd9b88ea054 /lib/dtas | |
parent | 507ffb38ebbfb64f065df71c50a041624e768991 (diff) | |
download | dtas-f4dcfabd826ce8a43b9d4c41706fa8b95fb81acd.tar.gz |
We don't deal with user-space buffers, so we should be fine using this compatibility layer and only checking the kernel buffers (until rbx implements a proper solution).
Diffstat (limited to 'lib/dtas')
-rw-r--r-- | lib/dtas/buffer.rb | 2 | ||||
-rw-r--r-- | lib/dtas/buffer/read_write.rb | 1 | ||||
-rw-r--r-- | lib/dtas/buffer/splice.rb | 1 | ||||
-rw-r--r-- | lib/dtas/compat_rbx.rb | 12 | ||||
-rw-r--r-- | lib/dtas/unix_accepted.rb | 1 | ||||
-rw-r--r-- | lib/dtas/unix_client.rb | 1 |
6 files changed, 16 insertions, 2 deletions
diff --git a/lib/dtas/buffer.rb b/lib/dtas/buffer.rb index c0ba6a6..f2b0240 100644 --- a/lib/dtas/buffer.rb +++ b/lib/dtas/buffer.rb @@ -1,6 +1,8 @@ # Copyright (C) 2013, Eric Wong <normalperson@yhbt.net> and all contributors # License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt) +require 'io/wait' require_relative '../dtas' +require_relative 'compat_rbx' # IO#nread class DTAS::Buffer # :nodoc: begin diff --git a/lib/dtas/buffer/read_write.rb b/lib/dtas/buffer/read_write.rb index 11d1a95..53b11de 100644 --- a/lib/dtas/buffer/read_write.rb +++ b/lib/dtas/buffer/read_write.rb @@ -1,6 +1,5 @@ # Copyright (C) 2013, Eric Wong <normalperson@yhbt.net> and all contributors # License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt) -require 'io/wait' require 'io/nonblock' require_relative '../../dtas' require_relative '../pipe' diff --git a/lib/dtas/buffer/splice.rb b/lib/dtas/buffer/splice.rb index 90c2e47..55ce3d5 100644 --- a/lib/dtas/buffer/splice.rb +++ b/lib/dtas/buffer/splice.rb @@ -1,6 +1,5 @@ # Copyright (C) 2013, Eric Wong <normalperson@yhbt.net> and all contributors # License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt) -require 'io/wait' require 'io/nonblock' require 'io/splice' require_relative '../../dtas' diff --git a/lib/dtas/compat_rbx.rb b/lib/dtas/compat_rbx.rb new file mode 100644 index 0000000..a64bf78 --- /dev/null +++ b/lib/dtas/compat_rbx.rb @@ -0,0 +1,12 @@ +# Copyright (C) 2013, Eric Wong <normalperson@yhbt.net> and all contributors +# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt) + +# ref: https://github.com/rubysl/rubysl-io-wait/issues/1 +# this ignores buffers and is Linux-only +class IO + def nread + buf = "\0" * 8 + ioctl(0x541B, buf) + buf.unpack("l_")[0] + end +end if ! IO.method_defined?(:nread) && RUBY_PLATFORM =~ /linux/ diff --git a/lib/dtas/unix_accepted.rb b/lib/dtas/unix_accepted.rb index be344c7..6658406 100644 --- a/lib/dtas/unix_accepted.rb +++ b/lib/dtas/unix_accepted.rb @@ -2,6 +2,7 @@ # License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt) require 'socket' require 'io/wait' +require_relative 'compat_rbx' class DTAS::UNIXAccepted # :nodoc: attr_reader :to_io diff --git a/lib/dtas/unix_client.rb b/lib/dtas/unix_client.rb index fa94bbf..fa8b11c 100644 --- a/lib/dtas/unix_client.rb +++ b/lib/dtas/unix_client.rb @@ -5,6 +5,7 @@ require_relative 'xs' require 'socket' require 'io/wait' require 'shellwords' +require_relative 'compat_rbx' class DTAS::UNIXClient # :nodoc: attr_reader :to_io |