Hi (Mark - nobody else will care I suppose), Since the SocketWrapperBase has been neatly factored away, I think scatter gather NIO2 style calls should be added to it for future use.
- public <A> void write(ByteBuffer[] srcs, int offset, int length, long timeout, TimeUnit unit, A attachment, CompletionHandler<Long,? super A> handler) The main semantic difference with real NIO2 would be that it will write ALL the content instead of some of it and let people deal with it for no good reason (thanks ...). - Scatter would be new since the NIO2 connector Nio2Channel doesn't have it at the moment, its goal is to avoid additional parsing for protocols which use fixed lengths for some of their fields (this should be the case); it is probably less useful than gather though public abstract <A> void read(ByteBuffer[] dsts, int offset, int length, long timeout, TimeUnit unit, A attachment, CompletionHandler<Long,? super A> handler); To help protocol implementation even more, maybe it would be possible to add an extra parameter to specify a minimum amount of bytes read, or (better) some additional interface to check if more bytes should be read before calling the completion handler I'm not sure how useful it is to also add the other simpler read/write method variants or the future styled ones, I'd say it is useless though. At first the new calls could be added to Nio2SocketWrapper before getting pulled up once the two others implement it. Comments ? Rémy