X-Git-Url: http://www.dolda2000.com/gitweb/?a=blobdiff_plain;f=src%2Fdolda%2Fjsvc%2Futil%2FResponseBuffer.java;h=c9494647ba52fa95a609a748709bbc22aa118d2f;hb=c5364ae271ec11fea2e3d1225846f51ee5d5bc30;hp=7c5760882aadd19c8db6dc4572fd65e27de34a7a;hpb=78f5d1201f8d3aecb660b7877b08d9bfbe650911;p=jsvc.git diff --git a/src/dolda/jsvc/util/ResponseBuffer.java b/src/dolda/jsvc/util/ResponseBuffer.java index 7c57608..c949464 100644 --- a/src/dolda/jsvc/util/ResponseBuffer.java +++ b/src/dolda/jsvc/util/ResponseBuffer.java @@ -4,16 +4,27 @@ import dolda.jsvc.*; import java.io.*; import java.util.*; -public abstract class ResponseBuffer implements Request { +public abstract class ResponseBuffer implements ResettableRequest { private boolean flushed = false; - private int respcode = -1; - private String resptext = null; + protected int respcode = -1; + protected String resptext = null; private OutputStream out = null, wrapout = null; - private MultiMap headers = new HeaderTreeMap() { - protected void modified() { - ckflush(); - } - }; + private MultiMap headers; + + public ResponseBuffer() { + init(); + } + + private void init() { + ckflush(); + wrapout = null; + respcode = -1; + headers = new HeaderTreeMap() { + protected void modified() { + ckflush(); + } + }; + } private void ckflush() { if(flushed) @@ -81,6 +92,14 @@ public abstract class ResponseBuffer implements Request { return(headers); } + public boolean canreset() { + return(!flushed); + } + + public void reset() { + init(); + } + protected abstract void backflush(); protected abstract OutputStream realoutput(); }