128 |
|
* @param dhQueue a Queue being used by the DataHandler that is registering |
129 |
|
* @param hostList a semi-colon seperated list of hosts |
130 |
|
*/ |
131 |
< |
public synchronized void register(Queue dhQueue, String hostList) { |
131 |
> |
public void register(Queue dhQueue, String hostList) { |
132 |
|
// check to see if we want all hosts |
133 |
|
if(hostList.equals("")) { |
134 |
< |
_allHostDataList.add(dhQueue); |
134 |
> |
synchronized(this) { |
135 |
> |
_allHostDataList.add(dhQueue); |
136 |
> |
} |
137 |
|
_logger.write(toString(), Logger.SYSMSG, "registered DataHandler for all hosts"); |
138 |
|
} |
139 |
|
else { |
141 |
|
StringTokenizer st = new StringTokenizer(hostList, ";"); |
142 |
|
while(st.hasMoreTokens()) { |
143 |
|
String host = st.nextToken(); |
144 |
< |
// see if we already have a list in the map for this host |
145 |
< |
if(_hostMap.containsKey(host)) { |
146 |
< |
// we do, so add to it |
147 |
< |
List list = (List) _hostMap.get(host); |
148 |
< |
list.add(dhQueue); |
144 |
> |
synchronized(this) { |
145 |
> |
// see if we already have a list in the map for this host |
146 |
> |
if(_hostMap.containsKey(host)) { |
147 |
> |
// we do, so add to it |
148 |
> |
List list = (List) _hostMap.get(host); |
149 |
> |
list.add(dhQueue); |
150 |
> |
} |
151 |
> |
else { |
152 |
> |
// we don't, so create a list and put it in the map |
153 |
> |
LinkedList list = new LinkedList(); |
154 |
> |
list.add(dhQueue); |
155 |
> |
_hostMap.put(host, list); |
156 |
> |
} |
157 |
|
} |
148 |
– |
else { |
149 |
– |
// we don't, so create a list and put it in the map |
150 |
– |
LinkedList list = new LinkedList(); |
151 |
– |
list.add(dhQueue); |
152 |
– |
_hostMap.put(host, list); |
153 |
– |
} |
158 |
|
} |
159 |
|
_logger.write(toString(), Logger.SYSMSG, "registered DataHandler for hosts: "+hostList); |
160 |
|
} |
161 |
|
// always add host to our complete host list |
162 |
< |
_allHostsList.add(dhQueue); |
162 |
> |
synchronized(this) { |
163 |
> |
_allHostsList.add(dhQueue); |
164 |
> |
} |
165 |
|
} |
166 |
|
|
167 |
|
/** |
175 |
|
* @param dhQueue a Queue being used by the DataHandler that is deregistering |
176 |
|
* @param hostList a semi-colon seperated list of hosts |
177 |
|
*/ |
178 |
< |
public synchronized void deregister(Queue dhQueue, String hostList) { |
178 |
> |
public void deregister(Queue dhQueue, String hostList) { |
179 |
|
// go through the list of hosts |
180 |
|
if(hostList.equals("")) { |
181 |
< |
_allHostDataList.remove(dhQueue); |
181 |
> |
synchronized(this) { |
182 |
> |
_allHostDataList.remove(dhQueue); |
183 |
> |
} |
184 |
|
_logger.write(toString(), Logger.SYSMSG, "deregistered DataHandler for all hosts"); |
185 |
|
} |
186 |
|
else { |
187 |
|
StringTokenizer st = new StringTokenizer(hostList, ";"); |
188 |
|
while(st.hasMoreTokens()) { |
189 |
|
String host = st.nextToken(); |
190 |
< |
// this should in reality always be true, but best check |
191 |
< |
if(_hostMap.containsKey(host)) { |
192 |
< |
// get the list and remove the host in question |
193 |
< |
LinkedList list = (LinkedList) _hostMap.get(host); |
194 |
< |
list.remove(dhQueue); |
195 |
< |
// if the list is now empty, we might as well remove it |
196 |
< |
if(list.size()==0) { |
197 |
< |
_hostMap.remove(host); |
190 |
> |
synchronized(this) { |
191 |
> |
// this should in reality always be true, but best check |
192 |
> |
if(_hostMap.containsKey(host)) { |
193 |
> |
// get the list and remove the host in question |
194 |
> |
LinkedList list = (LinkedList) _hostMap.get(host); |
195 |
> |
list.remove(dhQueue); |
196 |
> |
// if the list is now empty, we might as well remove it |
197 |
> |
if(list.size()==0) { |
198 |
> |
_hostMap.remove(host); |
199 |
> |
} |
200 |
|
} |
201 |
|
} |
202 |
|
} |
203 |
|
_logger.write(toString(), Logger.SYSMSG, "deregistered DataHandler for hosts: "+hostList); |
204 |
|
} |
205 |
|
// always remove host from our complete host list |
206 |
< |
_allHostsList.remove(dhQueue); |
206 |
> |
synchronized(this) { |
207 |
> |
_allHostsList.remove(dhQueue); |
208 |
> |
} |
209 |
|
} |
210 |
|
|
211 |
|
/** |