KeyAttachment att = (KeyAttachment) key.attachment();
try {
if ( att.getLatch()==null || att.getLatch().getCount()==0) att.startLatch(1,SelectionKey.OP_WRITE);
//only register for write if a write has not yet been issued
if ( (att.interestOps() & SelectionKey.OP_WRITE) == 0) socket.getPoller().add(socket,SelectionKey.OP_WRITE);
att.awaitLatch(writeTimeout,TimeUnit.MILLISECONDS,SelectionKey.OP_WRITE);
}catch (InterruptedException ignore) {
Thread.interrupted();
}
if ( att.getLatch()!=null && att.getLatch().getCount()> 0) {
//we got interrupted, but we haven't received notification from the poller.