private boolean match()

in rocketmq-iot-bridge/src/main/java/org/apache/rocketmq/iot/storage/subscription/impl/InMemorySubscriptionStore.java [162:182]


    private boolean match(String filter, String topic) {
        if (!filter.contains(MqttConstant.SUBSCRIPTION_FLAG_PLUS) && !filter.contains(MqttConstant.SUBSCRIPTION_FLAG_SHARP)) {
            return filter.equals(topic);
        }
        String[] filterTopics = filter.split(MqttConstant.SUBSCRIPTION_SEPARATOR);
        String[] actualTopics = topic.split(MqttConstant.SUBSCRIPTION_SEPARATOR);

        int i = 0;
        for (; i < filterTopics.length && i < actualTopics.length; i++) {
            if (MqttConstant.SUBSCRIPTION_FLAG_PLUS.equals(filterTopics[i])) {
                continue;
            }
            if (MqttConstant.SUBSCRIPTION_FLAG_SHARP.equals(filterTopics[i])) {
                return true;
            }
            if (!filterTopics[i].equals(actualTopics[i])) {
                return false;
            }
        }
        return i == actualTopics.length;
    }