public boolean processOneMessage() {
		while (true) {
			if (m_shutdown.get()) {
				return false;
			}

			if (m_processing.await(true)) {
				try {
					final Message message = m_receiver.waitForMessage();

					if (message == null) {
						// Current receiver has been shut down.
						m_processing.set(false);
					} else {
						m_messageDispatcher.send(message);
						return true;
					}
				} catch (CommunicationException e) {
					// The receive or send failed. We only set m_processing to
					// false when
					// our receiver has been shut down.
					m_errorHandler.handleException(e);
				}
			}
		}
	}
Wait to receive a message, then process it.

@return <code>true</code> if we processed a message successfully; <code>false</code> if we've
        been shut down.
@see #shutdown()
ngrinder-core/src/main/java/net/grinder/console/communication/ConsoleCommunicationImplementationEx.java