fixed potential concurrency issues in WindStatusServlet

This commit is contained in:
Axel Uhl
2014-09-30 18:16:48 +02:00
parent 3533a802fb
commit ff23160814
5 changed files with 20 additions and 19 deletions
@@ -304,8 +304,7 @@ public class IgtimiConnectionImpl implements IgtimiConnection {
}
final Map<TrackedRace, Integer> result;
if (!deviceSerialNumbers.isEmpty()) {
IgtimiWindReceiver windReceiver = new IgtimiWindReceiver(deviceSerialNumbers,
correctByDeclination ? DeclinationService.INSTANCE : null);
IgtimiWindReceiver windReceiver = new IgtimiWindReceiver(correctByDeclination ? DeclinationService.INSTANCE : null);
final WindListenerSendingToTrackedRace windListener = new WindListenerSendingToTrackedRace(
trackedRaces, Activator.getInstance().getWindTrackerFactory());
windReceiver.addListener(windListener);
@@ -48,8 +48,7 @@ public class IgtimiWindTracker extends AbstractWindTracker implements WindTracke
Iterable<String> devicesWeShouldListenTo = connection.getWindDevices();
if (!stopping) {
LiveDataConnection liveConnection = connection.getOrCreateLiveConnection(devicesWeShouldListenTo);
IgtimiWindReceiver windReceiver = new IgtimiWindReceiver(devicesWeShouldListenTo,
correctByDeclination ? DeclinationService.INSTANCE : null);
IgtimiWindReceiver windReceiver = new IgtimiWindReceiver(correctByDeclination ? DeclinationService.INSTANCE : null);
liveConnection.addListener(windReceiver);
windReceiver.addListener(new WindListenerSendingToTrackedRace(Collections.singleton(getTrackedRace()), windTrackerFactory));
liveConnectionsAndDeviceSerialNumber.put(liveConnection, new Util.Pair<Iterable<String>, Account>(devicesWeShouldListenTo, account));
@@ -109,7 +109,7 @@ public class IgtimiWindReceiver implements BulkFixReceiver {
}
}
public IgtimiWindReceiver(Iterable<String> deviceSerialNumbers, DeclinationService declinationService) {
public IgtimiWindReceiver(DeclinationService declinationService) {
receiver = new FixReceiver();
this.declinationService = declinationService;
listeners = new ConcurrentHashMap<>();