Hi Alan, Thanks for following this up.
On 19/02/2019 16:55, Alan Bateman wrote: > The issues with the 2-arg force method that I think need discussion are: > > 1. long from/to vs. from/length vs int index/length. Elements in > buffers, or the starting index of a region, are addressed by an int > index in the existing API. We are currently discussing absolute bulk > get/put methods on nio-dev right now and the methods on the table use > "int length", this is mostly because they are about bulk copying in/out > of byte arrays where offet+length is the norm. I agree that the force method should take int arguments to align with other methods. Also, I think they should be offset+length for the same reason. I will modify the JEP and the next webrev accordingly. > 2. limit vs. capacity. If I read the webrev correctly, it checks the > upper bound against the buffer capacity. I don't think we have any > existing methods where you can specify an index that is >= limit. I agree that for consistency with other methods it would be better to check against limit(). I will modify the next webrev accordingly modulo resolution of one small detail. My reason for using capacity() was that I was swayed by the original implementation of force(). It calls force0(fd, mappingAddress(offset), mappingLength(offset)) where offset is long offset = mappingOffset(); The definition of mappingLength(offset) is private long mappingLength(long mappingOffset) { return (long)capacity() + mappingOffset; I'm wondering if this ought to remain as is or ought to change to specify limit()? > 3. The javadoc doesn't specify the exception thrown when the bounds > checks fail. In the webrev I see that IAE is thrown but the existing > buffer methods specify IIOBE. If you agree then it means you can replace > the checks with one method: > Objects.checkFromIndexSize(index, length, limit()); It sounds like a very good idea to use that method and hence to throw IOOBE. I will modify the JEP and the next webrev accordingly. regards, Andrew Dinn ----------- Senior Principal Software Engineer Red Hat UK Ltd Registered in England and Wales under Company Registration No. 03798903 Directors: Michael Cunningham, Michael ("Mike") O'Neill, Eric Shander