public void send(Message message) {
        mLogger.log(Level.INFO, "send message dest = " + message.getDest()
                + ", message source " + message.getSource());
        if (message != null
                && !message.getKind().equals(Constant.MULTICAST_CRASH)) {
            checkUpdate(mConfigFileName);
            message.setSequenceNumber(mCurrentSeqNum++);
            message.setSource(mLocalName);
            String action = mConfigParser.getSendAction(message);
            if (action == null) {
                // If action equals null
                // No matching rule
                // Normal case
                sendMessage(message);
                return;
            }
            if (action.equals(Constant.ACTION_DROP)) {
                // Drop message
                // Do nothing
            } else if (action.equals(Constant.ACTION_DELAY)) {
                sendDelayedMessage(message);
            } else if (action.equals(Constant.ACTION_DUP)) {
                sendDuplicatedMessage(message);
            } else {
                sendMessage(message);
            }
        }
    }