From ab174e4e0e18f4b6a37044b4ffef94f026eec8eb Mon Sep 17 00:00:00 2001 From: nathan Date: Sat, 31 Mar 2018 16:03:52 +0200 Subject: [PATCH] Code polish --- .../OnMessageReceivedManager.java | 31 ++----------------- 1 file changed, 3 insertions(+), 28 deletions(-) diff --git a/src/dorkbox/network/connection/listenerManagement/OnMessageReceivedManager.java b/src/dorkbox/network/connection/listenerManagement/OnMessageReceivedManager.java index 645e107a..b422f877 100644 --- a/src/dorkbox/network/connection/listenerManagement/OnMessageReceivedManager.java +++ b/src/dorkbox/network/connection/listenerManagement/OnMessageReceivedManager.java @@ -102,19 +102,14 @@ class OnMessageReceivedManager { final Class type = identifyType(listener); synchronized (this) { - // access a snapshot of the listeners (single-writer-principle) - final IdentityMap listeners = REF.get(this); - ConcurrentIterator subscribedListeners = listeners.get(type); if (subscribedListeners == null) { subscribedListeners = new ConcurrentIterator(); listeners.put(type, subscribedListeners); } + //noinspection unchecked subscribedListeners.add(listener); - - // save this snapshot back to the original (single writer principle) - REF.lazySet(this, listeners); } } @@ -130,18 +125,14 @@ class OnMessageReceivedManager { int size = -1; // default is "not found" synchronized (this) { // access a snapshot of the listeners (single-writer-principle) - final IdentityMap listeners = REF.get(this); - final ConcurrentIterator concurrentIterator = listeners.get(type); if (concurrentIterator != null) { + //noinspection unchecked boolean removed = concurrentIterator.remove(listener); if (removed) { size = concurrentIterator.size(); } } - - // save this snapshot back to the original (single writer principle) - REF.lazySet(this, listeners); } return size; @@ -237,11 +228,6 @@ class OnMessageReceivedManager { return found; } - public synchronized - void removeAll() { - listeners.clear(); - } - /** * @return true if the listener was removed, false otherwise */ @@ -249,24 +235,16 @@ class OnMessageReceivedManager { boolean removeAll(final Class classType) { boolean found; - // access a snapshot of the listeners (single-writer-principle) - final IdentityMap listeners = REF.get(this); - found = listeners.remove(classType) != null; - // save this snapshot back to the original (single writer principle) - REF.lazySet(this, listeners); - return found; } /** * called on shutdown */ - public + public synchronized void clear() { - final IdentityMap listeners = REF.get(this); - // The iterators for this map are NOT THREAD SAFE! // using .entries() is what we are supposed to use! final IdentityMap.Entries entries = listeners.entries(); @@ -277,8 +255,5 @@ class OnMessageReceivedManager { } listeners.clear(); - - // save this snapshot back to the original (single writer principle) - REF.lazySet(this, listeners); } }