@Override
    public void action() {
        ACLMessage msg = myAgent.receive();
        if (msg != null) {
            if (msg.getConversationId() == null) {
                String log = "ConversationId == null : sender: " + msg.getSender().getLocalName()
                        + "; content: " + msg.getContent();
                logger.log(Level.WARNING, log);
                return;
            }

            switch (msg.getConversationId()) {
                case GET_ROOMS_FOR_GROUPS:
                    getRoomsForGroup(msg);
                    break;
                case KILL_ROOMS_AGENT:
                    try {
                        myAgent.getContainerController().getAgent(myAgent.getLocalName()).kill();
                    } catch (ControllerException ex) {
                        logger.log(Level.WARNING, "ROOMS AGENT DON'T WANT TO DIE", ex);
                    }
                    break;
                default:
                    notUnderstandMessage(msg.getSender().getLocalName(), msg.getConversationId());
                    break;
            }
        } else {
            block();
        }
    }