1
0
Fork 0
mirror of https://github.com/puma/puma.git synced 2022-11-09 13:48:40 -05:00
puma--puma/lib/puma/io_buffer.rb

46 lines
782 B
Ruby
Raw Normal View History

require 'java'
# Conservative native JRuby/Java implementation of IOBuffer
# backed by a ByteArrayOutputStream and conversion between
# Ruby String and Java bytes
2012-08-11 18:20:38 -04:00
module Puma
class JavaIOBuffer < java.io.ByteArrayOutputStream
field_reader :buf
end
2012-08-11 18:20:38 -04:00
class IOBuffer
BUF_DEFAULT_SIZE = 4096
2012-08-11 18:20:38 -04:00
def initialize
@buf = JavaIOBuffer.new(BUF_DEFAULT_SIZE)
2012-08-11 18:20:38 -04:00
end
def reset
@buf.reset
2012-08-11 18:20:38 -04:00
end
def <<(str)
bytes = str.to_java_bytes
@buf.write(bytes, 0, bytes.length)
2012-08-11 18:20:38 -04:00
end
def append(*strs)
strs.each { |s| self << s; }
2012-08-11 18:20:38 -04:00
end
def to_s
String.from_java_bytes @buf.to_byte_array
2012-08-11 18:20:38 -04:00
end
alias_method :to_str, :to_s
def used
@buf.size
end
def capacity
@buf.buf.length
2012-08-11 18:20:38 -04:00
end
end
end