Hi --

I wanted to use ThresholdingOutputStream to basically split output
over multiple files when a byte count is reached (Similar to a rolling
file log).  I could do this easily by implementing thresholdReached().
The method would close the current stream, create a new stream, and
then reset the written and thresholdExceeded values.  The problem, of
course, is that I can't change the values of written and
thresholdExceeded.  Basically I want to be able to hit a byte
threshold multiple times instead of just once.

In order to do the same thing with the current implementation, I need
to override checkThreshold( int ) and then try to keep track of how
many bytes were written to all previous output streams:
   protected void checkThreshold(int count) throws IOException
   {
       if ( getByteCount() - writtenToPreviousStreams + count > threshold )
       {
           writtenToPreviousStreams = getByteCount();
           //switch to new output stream
       }
   }

And I would have to override isThresholdExceeded() otherwise it would
return true even though it is not true for the current stream. And
then thresholdReached() is never called and has to be an empty method.
So you can see this becomes a little more cumbersome.

So would there be any problems with adding:
protected setThresholdExceeded( boolean thresholdExceeded ) and
setByteCount( long written )
or maybe just a protected reset() method?

The only other change that would need to be made: currently in
checkThreshold(int), thresholdExceeded needs to be set to true before
the call to thresholdReached() so that the value may be reset to false
inside thresholdReached().  But this should not cause any problem
AFAIK since thresholdExceeded is private anyway.

 protected void checkThreshold(int count) throws IOException
 {
   if (!thresholdExceeded && (written + count > threshold))
   {
     thresholdExceeded = true; //this was previously set after the
thresholdReached() call
     thresholdReached();
   }
 }

Any comments?  Thanks.
-Tom

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to