Thanks Alan. I dropped the "current" in setLevel. Yes, I would like to be explicit about the deflate invocation here, as the implementation clearly just calls the deflate() blindly with the old level/strategy after the level/strategy changed, regardless whether there is really anything in the buffer or not. So I think it might be good to set the expectation clear here.

http://cr.openjdk.java.net/~sherman/8020687/webrev/

-Sherman

On 9/14/13 5:24 AM, Alan Bateman wrote:
On 13/09/2013 20:44, Xueming Shen wrote:
Hi,

This is change to clarify the java doc to match the existing behavior.

If there is a "pending" level/strategy change (via setLevel/Stragety()) when deflate(...) is invoked, the implementation goes down to zlib's deflateParams() for deflating operation, which clearly specifies its behavior in zlib.h as

----------------------------------------------------------------
Dynamically update the compression level and compression strategy. The interpretation of level and strategy is as in deflateInit2. This can be used to switch between compression and straight copy of the input data, or to switch to a different kind of input data requiring a different strategy.
   If the compression level is changed, the input available so far is
compressed with the old level (and may be flushed); the new level will take
   effect only at the next call of deflate().
-----------------------------------------------------------------

and its corresponding implementation does exactly that.
It seems reasonable to have new strategy or level take effect after the available input has been compressed.

Your proposed wording is okay but I wonder if the word "current" should be dropped from the existing statement in setLevel. You might also be able to get away with a single statement too, something like "If changed, the new compression strategy takes effect after the input available has been compressed (or flushed)". Your wording is okay too if you really need to be explicit about deflate being called.

-Alan



Reply via email to