You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by co...@apache.org on 2003/07/17 15:02:58 UTC

cvs commit: ant/src/main/org/apache/tools/ant/taskdefs LogOutputStream.java

conor       2003/07/17 06:02:57

  Modified:    src/main/org/apache/tools/ant DemuxOutputStream.java
               src/main/org/apache/tools/ant/taskdefs LogOutputStream.java
  Log:
  Implement array writes for output processing
  
  Revision  Changes    Path
  1.16      +30 -1     ant/src/main/org/apache/tools/ant/DemuxOutputStream.java
  
  Index: DemuxOutputStream.java
  ===================================================================
  RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/DemuxOutputStream.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -w -u -r1.15 -r1.16
  --- DemuxOutputStream.java	17 Jul 2003 10:20:13 -0000	1.15
  +++ DemuxOutputStream.java	17 Jul 2003 13:02:56 -0000	1.16
  @@ -89,6 +89,9 @@
       /** Maximum buffer size. */
       private static final int MAX_SIZE = 1024;
   
  +    /** Initial buffer size. */
  +    private static final int INTIAL_SIZE = 132;
  +
       /** Mapping from thread to buffer (Thread to BufferInfo). */
       private Hashtable buffers = new Hashtable();
   
  @@ -127,7 +130,7 @@
           BufferInfo bufferInfo = (BufferInfo) buffers.get(current);
           if (bufferInfo == null) {
               bufferInfo = new BufferInfo();
  -            bufferInfo.buffer = new ByteArrayOutputStream();
  +            bufferInfo.buffer = new ByteArrayOutputStream(INTIAL_SIZE);
               bufferInfo.crSeen = false;
               buffers.put(current, bufferInfo);
           }
  @@ -237,6 +240,32 @@
           BufferInfo bufferInfo = getBufferInfo();
           if (bufferInfo.buffer.size() > 0) {
               processFlush(bufferInfo.buffer);
  +        }
  +    }
  +
  +    public void write(byte b[], int off, int len) throws IOException {
  +        // find the line breaks and pass other chars through in blocks
  +        int offset = off;
  +        int blockStartOffset = offset;
  +        int remaining = len;
  +        BufferInfo bufferInfo = getBufferInfo();
  +        while (remaining > 0) {
  +            while (remaining > 0 && b[offset] != 0x0a && b[offset] != 0x0d) {
  +                offset++;
  +                remaining--;
  +            }
  +            // either end of buffer or a line separator char
  +            int blockLength = offset - blockStartOffset;
  +            if (blockLength > 0) {
  +                project.log("Sending " + blockLength);
  +                bufferInfo.buffer.write(b, blockStartOffset, blockLength);
  +            }
  +            while(remaining > 0 && (b[offset] == 0x0a || b[offset] == 0x0d)) {
  +                write(b[offset]);
  +                offset++;
  +                remaining--;
  +            }
  +            blockStartOffset = offset;
           }
       }
   }
  
  
  
  1.13      +30 -1     ant/src/main/org/apache/tools/ant/taskdefs/LogOutputStream.java
  
  Index: LogOutputStream.java
  ===================================================================
  RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/LogOutputStream.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -w -u -r1.12 -r1.13
  --- LogOutputStream.java	6 Jul 2003 09:57:36 -0000	1.12
  +++ LogOutputStream.java	17 Jul 2003 13:02:57 -0000	1.13
  @@ -73,7 +73,11 @@
    */
   public class LogOutputStream extends OutputStream {
   
  -    private ByteArrayOutputStream buffer = new ByteArrayOutputStream();
  +    /** Initial buffer size. */
  +    private static final int INTIAL_SIZE = 132;
  +
  +    private ByteArrayOutputStream buffer
  +        = new ByteArrayOutputStream(INTIAL_SIZE);
       private boolean skip = false;
   
       private Task task;
  @@ -157,4 +161,29 @@
       public int getMessageLevel() {
           return level;
       }
  +
  +    public void write(byte b[], int off, int len) throws IOException {
  +        // find the line breaks and pass other chars through in blocks
  +        int offset = off;
  +        int blockStartOffset = offset;
  +        int remaining = len;
  +        while (remaining > 0) {
  +            while (remaining > 0 && b[offset] != 0x0a && b[offset] != 0x0d) {
  +                offset++;
  +                remaining--;
  +            }
  +            // either end of buffer or a line separator char
  +            int blockLength = offset - blockStartOffset;
  +            if (blockLength > 0) {
  +                buffer.write(b, blockStartOffset, blockLength);
  +            }
  +            while(remaining > 0 && (b[offset] == 0x0a || b[offset] == 0x0d)) {
  +                write(b[offset]);
  +                offset++;
  +                remaining--;
  +            }
  +            blockStartOffset = offset;
  +        }
  +    }
  +
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org