public void close ( ) throws IOException { if ( closed ) return ; closed = true ; if ( dmr8 != null ) { sendDXR ( dmr8 ) ; dmr8 = null ; } if ( mode == RequestMode . DMR ) return ; // only DMR should be sent // If there is no partial chunk to write then // we are done; else verify we can write and write the last // chunk; => multiple closes are ok. if ( chunk == null || chunk . position ( ) == 0 ) return ; // There is data left to write. verifystate ( ) ; // are we in a state supporting data write? // Force out the current chunk (might be empty) // but do not close the underlying output stream state = State . DATA ; // pretend int flags = DapUtil . CHUNK_END ; writeChunk ( flags ) ; state = State . END ; this . output . flush ( ) ; // Do not close if ( this . saveoutput != null ) { // write to true output target this . saveoutput . write ( ( ( ByteArrayOutputStream ) this . output ) . toByteArray ( ) ) ; } }
Closes this output stream and releases any system resources associated with this stream . Except the underlying stream is not actually closed ; that is left to the servlet level