public void shutdown() throws CommunicationException
public final void shutdown()
    public void shutdown() throws CommunicationException    {	if (!m_shutDown) {	    m_shuttingDown = true;	    final boolean needSuicideMessage;	    synchronized(this) {		needSuicideMessage = m_listening;	    }	    if (needSuicideMessage) {		// Pretty hacky way of shutting down the receiver. The		// packet goes out on the wire. Can't do much else		// with the DatagramSocket API though.		new Sender("suicide is painless", m_multicastAddressString,			   m_multicastPort).send(new ShutdownMessage());	    }	    else {		shutdownComplete();	    }	    while (!m_shutDown) {		try {		    synchronized (this) {			wait();		    }		}		catch (InterruptedException e) {		}	    }	}    }