mirror of
https://github.com/puma/puma.git
synced 2022-11-09 13:48:40 -05:00
Conditionalize the jruby IOBuffer
This commit is contained in:
parent
9b9b2f8097
commit
b68f8e53d2
2 changed files with 50 additions and 43 deletions
|
|
@ -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
lib/puma/java_io_buffer.rb
Normal file
45
lib/puma/java_io_buffer.rb
Normal file
|
|
@ -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
|
||||
Loading…
Add table
Add a link
Reference in a new issue