summaryrefslogtreecommitdiffhomepage
path: root/src/java/nginx/unit/OutputStream.java
diff options
context:
space:
mode:
authorAndrei Belov <defan@nginx.com>2019-03-01 18:30:09 +0300
committerAndrei Belov <defan@nginx.com>2019-03-01 18:30:09 +0300
commit3c3720cba7154bc168cbd00c74817626bb53e140 (patch)
treeda1500f7c6bd5e90ecf45299b6f4b19a29d521cd /src/java/nginx/unit/OutputStream.java
parent315a864c27aa27a48c013c4a1ef67a099ffea894 (diff)
parentdf02b03824065389c73213b19736140442cf63bc (diff)
downloadunit-3c3720cba7154bc168cbd00c74817626bb53e140.tar.gz
unit-3c3720cba7154bc168cbd00c74817626bb53e140.tar.bz2
Merged with the default branch.
Diffstat (limited to 'src/java/nginx/unit/OutputStream.java')
-rw-r--r--src/java/nginx/unit/OutputStream.java68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/java/nginx/unit/OutputStream.java b/src/java/nginx/unit/OutputStream.java
new file mode 100644
index 00000000..68af3423
--- /dev/null
+++ b/src/java/nginx/unit/OutputStream.java
@@ -0,0 +1,68 @@
+package nginx.unit;
+
+import java.io.IOException;
+
+import javax.servlet.ServletOutputStream;
+import javax.servlet.WriteListener;
+
+public class OutputStream extends ServletOutputStream {
+
+ private long req_info_ptr;
+
+ public OutputStream(long ptr) {
+ req_info_ptr = ptr;
+ }
+
+ @Override
+ public void write(int b) throws IOException
+ {
+ write(req_info_ptr, b);
+ }
+
+ private static native void write(long req_info_ptr, int b);
+
+
+ @Override
+ public void write(byte b[], int off, int len) throws IOException
+ {
+ if (b == null) {
+ throw new NullPointerException();
+ } else if ((off < 0) || (off > b.length) || (len < 0) ||
+ ((off + len) > b.length) || ((off + len) < 0)) {
+ throw new IndexOutOfBoundsException();
+ } else if (len == 0) {
+ return;
+ }
+
+ write(req_info_ptr, b, off, len);
+ }
+
+ private static native void write(long req_info_ptr, byte b[], int off, int len);
+
+ @Override
+ public void flush()
+ {
+ flush(req_info_ptr);
+ }
+
+ private static native void flush(long req_info_ptr);
+
+ @Override
+ public void close()
+ {
+ close(req_info_ptr);
+ }
+
+ private static native void close(long req_info_ptr);
+
+ @Override
+ public boolean isReady()
+ {
+ return true;
+ }
+
+ @Override
+ public void setWriteListener(WriteListener listener)
+ {
+ }
+}