Subversion Repository Public Repository

litesoft

Diff Revisions 948 vs 950 for /trunk/Java/GWT/OldClient/src/org/litesoft/GWT/eventbus/client/nonpublic/SubscriptionManager.java

Diff revisions: vs.
  @@ -1,142 +1,142 @@
1 - // This Source Code is in the Public Domain per: http://unlicense.org
2 - package org.litesoft.GWT.eventbus.client.nonpublic;
3 -
4 - import org.litesoft.GWT.eventbus.client.*;
5 -
6 - import java.util.*;
7 -
8 - public class SubscriptionManager {
9 - private Map mSubscribers = new HashMap(); // TargetName to ListenersEntry
10 - private String mEBform;
11 -
12 - public SubscriptionManager( String pEBform ) {
13 - mEBform = pEBform;
14 - }
15 -
16 - public synchronized void clear() {
17 - mSubscribers.clear();
18 - }
19 -
20 - public synchronized boolean anySubscribers( String pTargetName ) {
21 - return (null != getListenersEntry( pTargetName ));
22 - }
23 -
24 - public synchronized boolean hasPeerAcknowledged( String pTargetName ) {
25 - ListenersEntry entry = getListenersEntry( pTargetName );
26 - return (entry != null) && entry.hasPeerAcknowledged();
27 - }
28 -
29 - public synchronized void setPeerAcknowledged( String pTargetName ) {
30 - ListenersEntry entry = getListenersEntry( pTargetName );
31 - if ( entry != null ) {
32 - entry.setPeerAcknowledged();
33 - }
34 - }
35 -
36 - public synchronized EventPackageListener[] getListenersFor( String pTargetName ) {
37 - ListenersEntry entry = getListenersEntry( pTargetName );
38 - return (entry != null) ? entry.getListeners() : null;
39 - }
40 -
41 - private ListenersEntry getListenersEntry( String pTargetName ) {
42 - return (ListenersEntry) mSubscribers.get( pTargetName );
43 - }
44 -
45 - /**
46 - * @return T/F if added first pListener for pTargetName
47 - */
48 - public synchronized boolean subscribe( String pTargetName, EventPackageListener pListener ) {
49 - ListenersEntry entry = getListenersEntry( pTargetName );
50 - if ( entry == null ) {
51 - mSubscribers.put( pTargetName, new ListenersEntry( pListener ) );
52 - return true; // Just Added first Listener for TargetName
53 - }
54 - entry.add( pListener );
55 - return false; // did NOT just add first one!
56 - }
57 -
58 - /**
59 - * @return T/F if removed last pListener for pTargetName
60 - */
61 - public synchronized boolean unsubscribe( String pTargetName, EventPackageListener pListener ) {
62 - ListenersEntry entry = getListenersEntry( pTargetName );
63 - if ( entry != null ) {
64 - if ( entry.remove( pListener ) ) {
65 - mSubscribers.remove( pTargetName );
66 - return true; // reduced to nothing
67 - }
68 - }
69 - return false;
70 - }
71 -
72 - public String toString() {
73 - return mEBform;
74 - }
75 -
76 - private static class ListenersEntry {
77 - private EventPackageListener[] mListeners;
78 - private boolean mPeerAcknowledged = false;
79 -
80 - public ListenersEntry( EventPackageListener pListener ) {
81 - mListeners = new EventPackageListener[]{pListener};
82 - }
83 -
84 - public EventPackageListener[] getListeners() {
85 - return mListeners;
86 - }
87 -
88 - public boolean hasPeerAcknowledged() {
89 - return mPeerAcknowledged;
90 - }
91 -
92 - public void setPeerAcknowledged() {
93 - mPeerAcknowledged = true;
94 - }
95 -
96 - /**
97 - * @return T/F if pListener added (not already in the list)
98 - */
99 - public boolean add( EventPackageListener pListener ) {
100 - EventPackageListener[] newListeners = new EventPackageListener[mListeners.length + 1];
101 - int i = 0;
102 - for (; i < mListeners.length; i++ ) {
103 - if ( pListener == (newListeners[i] = mListeners[i]) ) {
104 - return false;
105 - }
106 - }
107 - newListeners[i] = pListener;
108 - mListeners = newListeners;
109 - return true;
110 - }
111 -
112 - /**
113 - * @return T/F if would have reduced to NO listeners
114 - */
115 - public boolean remove( EventPackageListener pListener ) {
116 - int at = -1;
117 - for ( int i = 0; i < mListeners.length; i++ ) {
118 - if ( pListener == mListeners[i] ) {
119 - at = i;
120 - break;
121 - }
122 - }
123 - if ( at == -1 ) {
124 - return false;
125 - }
126 - if ( mListeners.length == 1 ) {
127 - return true; // reduced to nothing
128 - }
129 - EventPackageListener[] newListeners = new EventPackageListener[mListeners.length - 1];
130 - int from = 0, to = 0;
131 - while ( from < at ) {
132 - newListeners[to++] = mListeners[from++];
133 - }
134 - from++;
135 - while ( from < mListeners.length ) {
136 - newListeners[to++] = mListeners[from++];
137 - }
138 - mListeners = newListeners;
139 - return false;
140 - }
141 - }
142 - }
1 + // This Source Code is in the Public Domain per: http://unlicense.org
2 + package org.litesoft.GWT.eventbus.client.nonpublic;
3 +
4 + import org.litesoft.GWT.eventbus.client.*;
5 +
6 + import java.util.*;
7 +
8 + public class SubscriptionManager {
9 + private Map mSubscribers = new HashMap(); // TargetName to ListenersEntry
10 + private String mEBform;
11 +
12 + public SubscriptionManager( String pEBform ) {
13 + mEBform = pEBform;
14 + }
15 +
16 + public synchronized void clear() {
17 + mSubscribers.clear();
18 + }
19 +
20 + public synchronized boolean anySubscribers( String pTargetName ) {
21 + return (null != getListenersEntry( pTargetName ));
22 + }
23 +
24 + public synchronized boolean hasPeerAcknowledged( String pTargetName ) {
25 + ListenersEntry entry = getListenersEntry( pTargetName );
26 + return (entry != null) && entry.hasPeerAcknowledged();
27 + }
28 +
29 + public synchronized void setPeerAcknowledged( String pTargetName ) {
30 + ListenersEntry entry = getListenersEntry( pTargetName );
31 + if ( entry != null ) {
32 + entry.setPeerAcknowledged();
33 + }
34 + }
35 +
36 + public synchronized EventPackageListener[] getListenersFor( String pTargetName ) {
37 + ListenersEntry entry = getListenersEntry( pTargetName );
38 + return (entry != null) ? entry.getListeners() : null;
39 + }
40 +
41 + private ListenersEntry getListenersEntry( String pTargetName ) {
42 + return (ListenersEntry) mSubscribers.get( pTargetName );
43 + }
44 +
45 + /**
46 + * @return T/F if added first pListener for pTargetName
47 + */
48 + public synchronized boolean subscribe( String pTargetName, EventPackageListener pListener ) {
49 + ListenersEntry entry = getListenersEntry( pTargetName );
50 + if ( entry == null ) {
51 + mSubscribers.put( pTargetName, new ListenersEntry( pListener ) );
52 + return true; // Just Added first Listener for TargetName
53 + }
54 + entry.add( pListener );
55 + return false; // did NOT just add first one!
56 + }
57 +
58 + /**
59 + * @return T/F if removed last pListener for pTargetName
60 + */
61 + public synchronized boolean unsubscribe( String pTargetName, EventPackageListener pListener ) {
62 + ListenersEntry entry = getListenersEntry( pTargetName );
63 + if ( entry != null ) {
64 + if ( entry.remove( pListener ) ) {
65 + mSubscribers.remove( pTargetName );
66 + return true; // reduced to nothing
67 + }
68 + }
69 + return false;
70 + }
71 +
72 + public String toString() {
73 + return mEBform;
74 + }
75 +
76 + private static class ListenersEntry {
77 + private EventPackageListener[] mListeners;
78 + private boolean mPeerAcknowledged = false;
79 +
80 + public ListenersEntry( EventPackageListener pListener ) {
81 + mListeners = new EventPackageListener[]{pListener};
82 + }
83 +
84 + public EventPackageListener[] getListeners() {
85 + return mListeners;
86 + }
87 +
88 + public boolean hasPeerAcknowledged() {
89 + return mPeerAcknowledged;
90 + }
91 +
92 + public void setPeerAcknowledged() {
93 + mPeerAcknowledged = true;
94 + }
95 +
96 + /**
97 + * @return T/F if pListener added (not already in the list)
98 + */
99 + public boolean add( EventPackageListener pListener ) {
100 + EventPackageListener[] newListeners = new EventPackageListener[mListeners.length + 1];
101 + int i = 0;
102 + for (; i < mListeners.length; i++ ) {
103 + if ( pListener == (newListeners[i] = mListeners[i]) ) {
104 + return false;
105 + }
106 + }
107 + newListeners[i] = pListener;
108 + mListeners = newListeners;
109 + return true;
110 + }
111 +
112 + /**
113 + * @return T/F if would have reduced to NO listeners
114 + */
115 + public boolean remove( EventPackageListener pListener ) {
116 + int at = -1;
117 + for ( int i = 0; i < mListeners.length; i++ ) {
118 + if ( pListener == mListeners[i] ) {
119 + at = i;
120 + break;
121 + }
122 + }
123 + if ( at == -1 ) {
124 + return false;
125 + }
126 + if ( mListeners.length == 1 ) {
127 + return true; // reduced to nothing
128 + }
129 + EventPackageListener[] newListeners = new EventPackageListener[mListeners.length - 1];
130 + int from = 0, to = 0;
131 + while ( from < at ) {
132 + newListeners[to++] = mListeners[from++];
133 + }
134 + from++;
135 + while ( from < mListeners.length ) {
136 + newListeners[to++] = mListeners[from++];
137 + }
138 + mListeners = newListeners;
139 + return false;
140 + }
141 + }
142 + }