Skip to content

Commit

Permalink
Conditionalize the jruby IOBuffer
Browse files Browse the repository at this point in the history
  • Loading branch information
evanphx committed Aug 12, 2012
1 parent 9b9b2f8 commit b68f8e5
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 43 deletions.
48 changes: 5 additions & 43 deletions lib/puma/io_buffer.rb
@@ -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
45 changes: 45 additions & 0 deletions lib/puma/java_io_buffer.rb
@@ -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.