Permalink
Browse files

Conditionalize the jruby IOBuffer

  • Loading branch information...
1 parent 9b9b2f8 commit b68f8e53d2c5a256ca7387ff3e13e543cb145938 @evanphx evanphx committed Aug 12, 2012
Showing with 50 additions and 43 deletions.
  1. +5 −43 lib/puma/io_buffer.rb
  2. +45 −0 lib/puma/java_io_buffer.rb
View
@@ -1,45 +1,7 @@
-require 'java'
+require 'puma/detect'
-# Conservative native JRuby/Java implementation of IOBuffer
-# backed by a ByteArrayOutputStream and conversion between
-# Ruby String and Java bytes
-module Puma
- class JavaIOBuffer < java.io.ByteArrayOutputStream
- field_reader :buf
- end
-
- class IOBuffer
- BUF_DEFAULT_SIZE = 4096
-
- def initialize
- @buf = JavaIOBuffer.new(BUF_DEFAULT_SIZE)
- end
-
- def reset
- @buf.reset
- end
-
- def <<(str)
- bytes = str.to_java_bytes
- @buf.write(bytes, 0, bytes.length)
- end
-
- def append(*strs)
- strs.each { |s| self << s; }
- end
-
- def to_s
- String.from_java_bytes @buf.to_byte_array
- end
-
- alias_method :to_str, :to_s
-
- def used
- @buf.size
- end
-
- def capacity
- @buf.buf.length
- end
- end
+if Puma::IS_JRUBY
+ require 'puma/java_io_buffer'
+else
+ require 'puma/puma_http11'
end
View
@@ -0,0 +1,45 @@
+require 'java'
+
+# Conservative native JRuby/Java implementation of IOBuffer
+# backed by a ByteArrayOutputStream and conversion between
+# Ruby String and Java bytes
+module Puma
+ class JavaIOBuffer < java.io.ByteArrayOutputStream
+ field_reader :buf
+ end
+
+ class IOBuffer
+ BUF_DEFAULT_SIZE = 4096
+
+ def initialize
+ @buf = JavaIOBuffer.new(BUF_DEFAULT_SIZE)
+ end
+
+ def reset
+ @buf.reset
+ end
+
+ def <<(str)
+ bytes = str.to_java_bytes
+ @buf.write(bytes, 0, bytes.length)
+ end
+
+ def append(*strs)
+ strs.each { |s| self << s; }
+ end
+
+ def to_s
+ String.from_java_bytes @buf.to_byte_array
+ end
+
+ alias_method :to_str, :to_s
+
+ def used
+ @buf.size
+ end
+
+ def capacity
+ @buf.buf.length
+ end
+ end
+end

0 comments on commit b68f8e5

Please sign in to comment.