Pregunta

¿Cuál es la diferencia entre estos dos métodos:

ProcessPacket:

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

y aceptar :

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

¿No son capaces de hacer lo mismo?

Nota :

con.addPacketListener(pListener, pFilter);
¿Fue útil?

Solución

Parece claro. los PacketFilter Filtra paquetes para procesar por el PacketListener.

Otros consejos

Como comprende, PacketFilter se usa antes de PacketListener para filtrar los datos de paquetes de los tipos de coincidencia. Solo el paquete que satisface PacketFilter puede ingresar al procesamiento de PacketListener.

Y PacketFilter es una interfaz que solo declara un método: aceptar.

PacketListener proporciona un mecanismo para escuchar paquetes que pasan un filtro especificado. Esto permite la programación al estilo de eventos: cada vez que se encuentra un nuevo paquete, se llamará al método ProcessPacket (paquete). Este es el enfoque opuesto a la funcionalidad proporcionada por un PacketCollector que le permite bloquear mientras espera resultados.

PacketFilter define una forma de filtrar paquetes para atributos particulares. Los filtros de paquetes se utilizan al construir oyentes o coleccionistas de paquetes: el filtro define qué paquetes coinciden con los criterios del recolector o el oyente para un mayor procesamiento de paquetes.

Se definen varios filtros predefinidos. Estos filtros se pueden combinar lógicamente para un filtrado de paquetes más complejo mediante el uso de filtros AndFilter y Orfilter. También es posible definir sus propios filtros implementando esta interfaz. El ejemplo de código a continuación crea un filtro trivial para paquetes con una identificación específica.

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

Las declaraciones anteriores son de Java Doc.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top