}
if (response.isClosed() || !request.isComet()) {
res.action(ActionCode.ACTION_COMET_END, null);
- } else if (!error && read && request.getAvailable()) {
+ } else if (!error && read && request.isReadable()) {
// If this was a read and not all bytes have been read, or if no data
// was read from the connector, then it is an error
error = true;
if (request.isComet()) {
if (!response.isClosed() && !response.isError()) {
- if (request.getAvailable()) {
+ if (request.isReadable()) {
// Invoke a read event right away if there are available bytes
if (event(req, res, SocketStatus.OPEN_READ)) {
comet = true;
}
+
+ /**
+ * Return the amount of bytes written by the lower layer.
+ */
+ protected int lastWrite() {
+ return coyoteResponse.getLastWrite();
+ }
+
// ------------------------------------------------- Bytes Handling Methods
/**
* Return true if bytes are available.
*/
- public boolean getAvailable() {
+ public boolean isReadable() {
return (inputBuffer.available() > 0);
}
}
+ /**
+ * Return true if bytes are available.
+ */
+ public boolean isWriteable() {
+ return (outputBuffer.lastWrite() > 0);
+ }
+
+
// ------------------------------------------------ ServletResponse Methods
protected Request req;
+ protected int lastWrite = 1;
+
// ------------------------------------------------------------- Properties
public Request getRequest() {
// -------------------- State --------------------
+ public int getLastWrite() {
+ return lastWrite;
+ }
+
+
+ public void setLastWrite(int lastWrite) {
+ this.lastWrite = lastWrite;
+ }
+
+
public int getStatus() {
return status;
}
headers.clear();
// update counters
+ lastWrite = 1;
bytesWritten=0;
}