X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=src%2Fdolda%2Fjsvc%2Futil%2FResponseBuffer.java;fp=src%2Fdolda%2Fjsvc%2Futil%2FResponseBuffer.java;h=83e91cda0e01fac784dd50d80ba7a934fbc9fe6d;hb=c35d6760bbadced0cee2aa1bae788dee8aff23ef;hp=7c5760882aadd19c8db6dc4572fd65e27de34a7a;hpb=4beebc65d52b46c6ec62d3c11d243598e72ca46c;p=jsvc.git diff --git a/src/dolda/jsvc/util/ResponseBuffer.java b/src/dolda/jsvc/util/ResponseBuffer.java index 7c57608..83e91cd 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; 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(); }