1
0
Fork 0
mirror of https://codeberg.org/Mercury-IM/Smack synced 2025-09-10 18:59:41 +02:00

Optimized concurrency in packet writer, better job of cleanup on disconnect.

git-svn-id: http://svn.igniterealtime.org/svn/repos/smack/trunk@7183 b35dd754-fafc-0310-a699-88a17e54d16e
This commit is contained in:
Matt Tucker 2007-02-19 05:48:57 +00:00 committed by matt
parent 319dcd408f
commit 3e4a1ed5b5
3 changed files with 62 additions and 89 deletions

View file

@ -50,7 +50,8 @@ class PacketReader {
private XmlPullParser parser;
private boolean done;
private Collection<PacketCollector> collectors = new ConcurrentLinkedQueue<PacketCollector>();
protected final Map<PacketListener, ListenerWrapper> listeners = new ConcurrentHashMap<PacketListener, ListenerWrapper>();
protected final Map<PacketListener, ListenerWrapper> listeners =
new ConcurrentHashMap<PacketListener, ListenerWrapper>();
protected final Collection<ConnectionListener> connectionListeners =
new CopyOnWriteArrayList<ConnectionListener>();
@ -197,6 +198,15 @@ class PacketReader {
}
}
/**
* Cleans up all resources used by the packet reader.
*/
void cleanup() {
connectionListeners.clear();
listeners.clear();
collectors.clear();
}
/**
* Sends out a notification that there was an error with the connection
* and closes the connection.
@ -824,7 +834,7 @@ class PacketReader {
/**
* A wrapper class to associate a packet collector with a listener.
*/
protected static class ListenerWrapper {
private static class ListenerWrapper {
private PacketListener packetListener;
private PacketCollector packetCollector;