protected int waitOnSelector() {
		int numNewKeys = 0;
		try {
			if(log.isLoggable(Level.FINER))
				log.finer(id+"coming into select");
			numNewKeys = selector.select();
//should assert we are not stopping, have listeners, or have keys to process...			

			if(log.isLoggable(Level.FINER))
				log.finer(id+"coming out of select with newkeys="+numNewKeys+
						" regCnt="+listenerList.getListenerCount()+" needCloseOrRegister="+needCloseOrRegister+
						" wantShutdown="+selector.isWantShutdown());
			
			assert numNewKeys > 0 || listenerList.getListenerCount() > 0 || selector.isWantShutdown() : 
				"Should only wakeup when we have stuff to do";
			
		} catch (IOException e) {
			log.log(Level.WARNING, id+"Having trouble with a channel", e);
		}
		return numNewKeys;
	}