Question

Quelle est la différence entre ces deux méthodes:

ProcessPacket:

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

et J'accepte :

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

Ne sont-ils pas capables de faire la même chose?

Remarque :

con.addPacketListener(pListener, pFilter);
Était-ce utile?

La solution

Cela semble clair. La PacketFilter filtre les paquets pour le traitement par le PacketListener.

Autres conseils

Si vous comprenez, PacketFilter est utilisé avant PacketListener pour filtrer les données de paquets des types de correspondance. Seul le paquet qui satisfait PacketFilter peut entrer le traitement PacketListener.

Et PacketFilter est une interface qui ne déclare qu'une méthode: accepter.

PacketListener fournit un mécanisme pour écouter les paquets qui passent un filtre spécifié. Cela permet une programmation de style événement - chaque fois qu'un nouveau paquet est trouvé, la méthode ProcessPacket (paquet) sera appelée. Il s'agit de l'approche opposée des fonctionnalités fournies par un PacketCollector qui vous permet de bloquer en attendant les résultats.

PacketFilter définit un moyen de filtrer les paquets pour des attributs particuliers. Les filtres de paquets sont utilisés lors de la construction d'auditeurs de paquets ou de collectionneurs - le filtre définit quels paquets correspondent aux critères du collecteur ou de l'écouteur pour un traitement supplémentaire de paquets.

Plusieurs filtres prédéfinis sont définis. Ces filtres peuvent être logiquement combinés pour un filtrage de paquets plus complexe en utilisant les filtres et les filtres et les orfiltres. Il est également possible de définir vos propres filtres en implémentant cette interface. L'exemple de code ci-dessous crée un filtre trivial pour les paquets avec un ID spécifique.

// 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);

Les déclarations ci-dessus proviennent de Java Doc.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top