Sembra chiaro. Il PacketFilter
Filtri pacchetti per l'elaborazione da parte del PacketListener.
Qual è la differenza tra PacketFilter e accetta?
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);
Soluzione
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.