Processing Incoming Packets

Back

Smack provides a flexible framework for processing incoming packets using two constructs:

The org.jivesoftware.smack.filter.PacketFilter interface determines which specific packets will be delivered to a PacketCollector or PacketListener. Many pre-defined filters can be found in the org.jivesoftware.smack.filter package.

The following code snippet demonstrates registering both a packet collector and a packet listener:

// Create a packet filter to listen for new messages from a particular
// user. We use an AndFilter to combine two other filters._
PacketFilter filter = new AndFilter(new PacketTypeFilter(Message.class),
		new FromContainsFilter("mary@jivesoftware.com"));
// Assume we've created a XMPPConnection name "connection".

// First, register a packet collector using the filter we created.
PacketCollector myCollector = connection.createPacketCollector(filter);
// Normally, you'd do something with the collector, like wait for new packets.

// Next, create a packet listener. We use an anonymous inner class for brevity.
PacketListener myListener = new PacketListener() {
		**public** **void** processPacket(Packet packet) {
			// Do something with the incoming packet here._
		}
	};
// Register the listener._
connection.addPacketListener(myListener, filter);

Standard Packet Filters

A rich set of packet filters are included with Smack, or you can create your own filters by coding to the PacketFilter interface. The default set of filters includes:

Copyright (C) Jive Software 2002-2008