Skip to content

Commit

Permalink
For JRUBY-5778: net http and gzip decompression in 1.9
Browse files Browse the repository at this point in the history
* Add GzipWriter and GzipReader#initialize that accepts options hash (ignored for now).
* Full impl in 1.6.5?
  • Loading branch information
headius committed Aug 16, 2011
1 parent b637df5 commit cc2c489
Showing 1 changed file with 35 additions and 5 deletions.
40 changes: 35 additions & 5 deletions src/org/jruby/RubyZlib.java
Expand Up @@ -46,6 +46,7 @@
import java.util.zip.DeflaterOutputStream; import java.util.zip.DeflaterOutputStream;
import java.util.zip.Inflater; import java.util.zip.Inflater;
import java.util.zip.InflaterInputStream; import java.util.zip.InflaterInputStream;
import org.jcodings.Encoding;


import org.joda.time.DateTime; import org.joda.time.DateTime;


Expand All @@ -71,6 +72,8 @@
import org.jruby.util.IOOutputStream; import org.jruby.util.IOOutputStream;
import org.jruby.util.io.Stream; import org.jruby.util.io.Stream;


import static org.jruby.CompatVersion.*;

@JRubyModule(name="Zlib") @JRubyModule(name="Zlib")
public class RubyZlib { public class RubyZlib {
// version // version
Expand Down Expand Up @@ -1429,23 +1432,34 @@ private long bytesToUInt(byte[] bytes, int pos) {
} }


@JRubyMethod(visibility = PRIVATE) @JRubyMethod(visibility = PRIVATE)
public IRubyObject initialize(IRubyObject arg, Block unusedBlock) { public IRubyObject initialize(IRubyObject stream) {
realIo = arg; realIo = stream;
line = 0; line = 0;
position = 0; position = 0;
io = new HeaderReadableGZIPInputStream(new CountingIOInputStream(realIo)); io = new HeaderReadableGZIPInputStream(new CountingIOInputStream(realIo));
bufferedStream = new BufferedInputStream(io); bufferedStream = new BufferedInputStream(io);
return this; return this;
} }


@JRubyMethod(visibility = PRIVATE, compat = RUBY1_9)
public IRubyObject initialize19(IRubyObject stream) {
return initialize(stream);
}

@JRubyMethod(visibility = PRIVATE, compat = RUBY1_9)
public IRubyObject initialize19(IRubyObject stream, IRubyObject options) {
initialize(stream);
return this;
}

@JRubyMethod @JRubyMethod
public IRubyObject rewind() { public IRubyObject rewind() {
Ruby rt = getRuntime(); Ruby rt = getRuntime();
// should invoke seek on realIo... // should invoke seek on realIo...
realIo.callMethod(rt.getCurrentContext(), "seek", realIo.callMethod(rt.getCurrentContext(), "seek",
new IRubyObject[]{rt.newFixnum(-io.pos()), rt.newFixnum(Stream.SEEK_CUR)}); new IRubyObject[]{rt.newFixnum(-io.pos()), rt.newFixnum(Stream.SEEK_CUR)});
// ... and then reinitialize // ... and then reinitialize
initialize(realIo, Block.NULL_BLOCK); initialize(realIo);
return getRuntime().getNil(); return getRuntime().getNil();
} }


Expand Down Expand Up @@ -1878,8 +1892,13 @@ private void writeTrailer() throws IOException {
private HeaderModifyableGZIPOutputStream io; private HeaderModifyableGZIPOutputStream io;


@JRubyMethod(required = 1, rest = true, visibility = PRIVATE) @JRubyMethod(required = 1, rest = true, visibility = PRIVATE)
public IRubyObject initialize(IRubyObject[] args, Block unusedBlock) { public IRubyObject initialize(IRubyObject[] args) {
realIo = (RubyObject) args[0]; return initialize(args[0]);
}

@JRubyMethod(visibility = PRIVATE)
public IRubyObject initialize(IRubyObject arg) {
realIo = (RubyObject) arg;
try { try {
io = new HeaderModifyableGZIPOutputStream(realIo); io = new HeaderModifyableGZIPOutputStream(realIo);
return this; return this;
Expand All @@ -1888,6 +1907,17 @@ public IRubyObject initialize(IRubyObject[] args, Block unusedBlock) {
} }
} }


@JRubyMethod(visibility = PRIVATE, compat = RUBY1_9)
public IRubyObject initialize19(IRubyObject stream) {
return initialize(stream);
}

@JRubyMethod(visibility = PRIVATE, compat = RUBY1_9)
public IRubyObject initialize19(IRubyObject stream, IRubyObject options) {
initialize(stream);
return this;
}

@Override @Override
@JRubyMethod(name = "close") @JRubyMethod(name = "close")
public IRubyObject close() { public IRubyObject close() {
Expand Down

0 comments on commit cc2c489

Please sign in to comment.