Вопрос

В чем разница между этими двумя методами:

ProcessPacket:

PacketListener pListener = new PacketListener() {
        @Override
        public void processPacket(Packet packet) {
            if(packet instanceof Presence) {
               //..
            }
        }
    };

а также принимать :

PacketFilter pFilter = new PacketFilter() {
        @Override
        public boolean accept(Packet packet) {
            return true;
        }
    };

Разве они не способны сделать то же самое?

примечание :

con.addPacketListener(pListener, pFilter);
Это было полезно?

Решение

Кажется ясно. А PacketFilter фильтруют пакеты для обработки PacketListener.

Другие советы

Как вы понимаете, PacketFilter используется перед PacketListener для фильтрации данных пакетов типов соответствия. Только пакет, который удовлетворяет PacketFilter, может ввести обработку PacketListener.

И PacketFilter - это интерфейс, который объявляет только метод: принять.

PacketListener предоставляет механизм для прослушивания пакетов, которые проходят указанный фильтр. Это позволяет программировать в стиле событий-каждый раз, когда будет обнаружен новый пакет, будет вызван метод ProcessPacket (Packet). Это противоположный подход к функциональности, предоставленной PacketCollector, который позволяет блокировать в ожидании результатов.

PacketFilter определяет способ фильтрации пакетов для определенных атрибутов. Фильтры пакетов используются при строительстве слушателей или коллекционеров пакетов - фильтр определяет, какие пакеты соответствуют критериям коллекционера или слушателя для дальнейшей обработки пакетов.

Несколько предварительно определенных фильтров определены. Эти фильтры могут быть логически объединены для более сложной фильтрации пакетов, используя фильтры и фильтры и орфильтера. Также можно определить свои собственные фильтры, реализуя этот интерфейс. Пример кода ниже создает тривиальный фильтр для пакетов с определенным идентификатором.

// Use an anonymous inner class to define a packet filter that returns
// all packets that have a packet ID of "RS145".
PacketFilter myFilter = new PacketFilter() {
    public boolean accept(Packet packet) {
        return "RS145".equals(packet.getPacketID());
    }
 };
// Create a new packet collector using the filter we created.
PacketCollector myCollector = packetReader.createPacketCollector(myFilter);

Вышеуказанные заявления от Java Doc.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top