log.error("",x);\r
continue;\r
}\r
- //timeout\r
- Set keys = selector.keys();\r
- long now = System.currentTimeMillis();\r
- for (Iterator iter = keys.iterator(); iter.hasNext(); ) {\r
- SelectionKey key = (SelectionKey) iter.next();\r
- try {\r
- if (key.interestOps() == SelectionKey.OP_READ) {\r
- //only timeout sockets that we are waiting for a read from\r
- KeyAttachment ka = (KeyAttachment) key.attachment();\r
- long delta = now - ka.getLastAccess();\r
- if (delta > (long) soTimeout) {\r
- cancelledKey(key);\r
- }\r
- }\r
- }catch ( CancelledKeyException ckx ) {\r
- cancelledKey(key);\r
- }\r
- }\r
+ \r
\r
\r
- if (keyCount == 0) continue;\r
+ //if (keyCount == 0) continue;\r
\r
- Iterator iterator = selector.selectedKeys().iterator();\r
+ Iterator iterator = keyCount > 0 ? selector.selectedKeys().iterator() : null;\r
// Walk through the collection of ready keys and dispatch\r
// any active event.\r
- while (iterator.hasNext()) {\r
+ while (iterator != null && iterator.hasNext()) {\r
SelectionKey sk = (SelectionKey) iterator.next();\r
iterator.remove();\r
KeyAttachment attachment = (KeyAttachment)sk.attachment();\r
}\r
}//while\r
\r
- \r
+ //timeout\r
+ Set keys = selector.keys();\r
+ long now = System.currentTimeMillis();\r
+ for (Iterator iter = keys.iterator(); iter.hasNext(); ) {\r
+ SelectionKey key = (SelectionKey) iter.next();\r
+ try {\r
+ if (key.interestOps() == SelectionKey.OP_READ) {\r
+ //only timeout sockets that we are waiting for a read from\r
+ KeyAttachment ka = (KeyAttachment) key.attachment();\r
+ long delta = now - ka.getLastAccess();\r
+ if (delta > (long) soTimeout) {\r
+ cancelledKey(key);\r
+ }\r
+ }\r
+ }catch ( CancelledKeyException ckx ) {\r
+ cancelledKey(key);\r
+ }\r
+ }\r
+\r
}\r
synchronized (this) {\r
this.notifyAll();\r