Domanda

Qual è la differenza tra questi due metodi:

PROCESSPACKET:

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

e Accetta:

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

Non sono in grado di fare la stessa cosa?

Nota :

con.addPacketListener(pListener, pFilter);
È stato utile?

Soluzione

Sembra chiaro. Il PacketFilter Filtri pacchetti per l'elaborazione da parte del PacketListener.

Altri suggerimenti

Come capisci, PacketFilter viene utilizzato prima di PacketListener per filtrare i dati dei pacchetti dei tipi di corrispondenza. Solo il pacchetto che soddisfa PacketFilter può inserire l'elaborazione di PacketListener.

E PacketFilter è un'interfaccia che dichiara solo un metodo: accetta.

PacketListener fornisce un meccanismo per ascoltare i pacchetti che superano un filtro specificato. Ciò consente la programmazione in stile eventi: ogni volta che viene trovato un nuovo pacchetto, verrà chiamato il metodo di procetpacket (pacchetto). Questo è l'approccio opposto alla funzionalità fornita da un packetcollector che consente di bloccare in attesa di risultati.

PacketFilter definisce un modo per filtrare i pacchetti per attributi particolari. I filtri dei pacchetti vengono utilizzati quando si costruiscono ascoltatori o collezionisti di pacchetti: il filtro definisce quali pacchetti corrispondono ai criteri del collettore o dell'ascoltatore per ulteriori elaborazioni dei pacchetti.

Sono definiti diversi filtri predefiniti. Questi filtri possono essere logicamente combinati per un filtro dei pacchetti più complessi utilizzando i filtri andfilter e orfilter. È anche possibile definire i propri filtri implementando questa interfaccia. L'esempio del codice seguente crea un filtro banale per i pacchetti con un ID specifico.

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

Le dichiarazioni di cui sopra provengono da Java doc.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top