private void processMessage (Message m) throws IllegalStateException {
        
        log.fine("Processing control message");
        ControlMessage ctrl = (ControlMessage) m;
        char ctrlType = ctrl.getMessageSubtype();
        
        
        switch (ctrlType) {
            
            case 'r': /* discovery response */
                        processDiscoveryResponse(m);
                        break;
                
            case 'j': /* cluster membership message */
                        processJoinMessage(m);
                        break;
                
            case 'd': /* Someone wants to join the cluster */
                        processDiscovery(m);
                        break;
            
            case 'm': /* We need to act as a contact node for someone */
                        processMembershipRequest(m);
                        break;
            
            case 'a': /* This should not be called from here */
                        break;
            
            case 'p': /* A membership proposal was received */
                        processMembershipProposal(m);
                        break;
           
            case 'c': /* A membership commit */
                        processMembershipCommit(m);
                        break;
                
            case 'n': /* Delete a node from cluster table */
                        processNodeDeleteRequest(m);
                        break;
        }
    }