mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-21 03:30:12 +00:00
pass through the timeout parameter to the trackers; TracTrac receivers now use it; -1 means wait and is used for restore
Change-Id: Iee676ffceb44eb9459c51ba38cddbaf5ba40c9fb
This commit is contained in:
1 parent
4e1395d8a7
commit
a615173f26
23 files changed
+92
-62
No files matched your search
+8
-4
@@ -128,17 +128,19 @@ public interface DomainFactory {
|
||||
* Provides the capability to obtain the {@link WindTrack}s for the different wind sources. A trivial
|
||||
* implementation is {@link EmptyWindStore} which simply provides new, empty tracks. This is always
|
||||
* available but loses track of the wind, e.g., during server restarts.
|
||||
* @param timeoutInMilliseconds TODO
|
||||
*/
|
||||
TracTracRaceTracker createRaceTracker(RaceLogStore raceLogStore, RegattaLogStore regattaLogStore, WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry,
|
||||
RaceLogResolver raceLogResolver, RaceTrackingConnectivityParametersImpl connectivityParams)
|
||||
RaceLogResolver raceLogResolver, RaceTrackingConnectivityParametersImpl connectivityParams, long timeoutInMilliseconds)
|
||||
throws MalformedURLException, FileNotFoundException, URISyntaxException, CreateModelException, SubscriberInitializationException;
|
||||
|
||||
/**
|
||||
* Same as {@link #createRaceTracker(URL, URI, URI, URI, TimePoint, TimePoint, WindStore, TrackedRegattaRegistry)},
|
||||
* only that a predefined {@link Regatta} is used to hold the resulting races.
|
||||
* @param timeoutInMilliseconds TODO
|
||||
*/
|
||||
RaceTracker createRaceTracker(Regatta regatta, RaceLogStore raceLogStore, RegattaLogStore regattaLogStore, WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry,
|
||||
RaceLogResolver raceLogResolver, RaceTrackingConnectivityParametersImpl connectivityParams)
|
||||
RaceLogResolver raceLogResolver, RaceTrackingConnectivityParametersImpl connectivityParams, long timeoutInMilliseconds)
|
||||
throws MalformedURLException, FileNotFoundException, URISyntaxException, CreateModelException,
|
||||
SubscriberInitializationException;
|
||||
|
||||
@@ -155,6 +157,7 @@ public interface DomainFactory {
|
||||
* must have been created before through
|
||||
* {@link #getOrCreateTrackedRegatta(com.sap.sailing.domain.base.Regatta)} because otherwise the link to
|
||||
* the {@link IEvent} can't be established
|
||||
* @param timeoutInMilliseconds TODO
|
||||
* @param tokenToRetrieveAssociatedRace
|
||||
* used to update the set of{@link RaceDefinition}s received by the {@link RaceCourseReceiver} created by
|
||||
* this call
|
||||
@@ -163,7 +166,7 @@ public interface DomainFactory {
|
||||
Simulator simulator, WindStore windStore, DynamicRaceDefinitionSet raceDefinitionSetToUpdate, TrackedRegattaRegistry trackedRegattaRegistry,
|
||||
RaceLogResolver raceLogResolver, IRace tractracRace,
|
||||
URI courseDesignUpdateURI, String tracTracUsername, String tracTracPassword,
|
||||
IEventSubscriber eventSubscriber, IRaceSubscriber raceSubscriber, boolean useInternalMarkPassingAlgorithm);
|
||||
IEventSubscriber eventSubscriber, IRaceSubscriber raceSubscriber, boolean useInternalMarkPassingAlgorithm, long timeoutInMilliseconds);
|
||||
|
||||
/**
|
||||
* Creates a {@link RaceDefinition} from a TracTrac {@link IRace} and a domain {@link Course} definition. The
|
||||
@@ -203,11 +206,12 @@ public interface DomainFactory {
|
||||
/**
|
||||
* If the vm argument tractrac.usemarkpassings=false, the RecieverType MARKPASSINGS will not return anything
|
||||
* @param raceLogResolver TODO
|
||||
* @param timeoutInMilliseconds TODO
|
||||
*/
|
||||
Iterable<Receiver> getUpdateReceivers(DynamicTrackedRegatta trackedRegatta, IRace tractracRace, WindStore windStore,
|
||||
long delayToLiveInMillis, Simulator simulator, DynamicRaceDefinitionSet raceDefinitionSetToUpdate, TrackedRegattaRegistry trackedRegattaRegistry,
|
||||
RaceLogResolver raceLogResolver, URI courseDesignUpdateURI,
|
||||
String tracTracUsername, String tracTracPassword, IEventSubscriber eventSubscriber, IRaceSubscriber raceSubscriber, boolean ignoreTracTracMarkPassings, ReceiverType... types);
|
||||
String tracTracUsername, String tracTracPassword, IEventSubscriber eventSubscriber, IRaceSubscriber raceSubscriber, boolean ignoreTracTracMarkPassings, long timeoutInMilliseconds, ReceiverType... types);
|
||||
|
||||
JSONService parseJSONURLWithRaceRecords(URL jsonURL, boolean loadClientParams) throws IOException, ParseException, org.json.simple.parser.ParseException, URISyntaxException;
|
||||
|
||||
|
||||
+5
-3
@@ -44,6 +44,7 @@ public abstract class AbstractReceiverWithQueue<A, B, C> implements Runnable, Re
|
||||
private final Simulator simulator;
|
||||
private final Thread thread;
|
||||
private final Map<Util.Triple<A, B, C>, Set<LoadingQueueDoneCallBack>> loadingQueueDoneCallBacks;
|
||||
private final long timeoutInMilliseconds;
|
||||
|
||||
/**
|
||||
* used by {@link #stopAfterNotReceivingEventsForSomeTime(long)} and {@link #run()} to check if an event was received
|
||||
@@ -52,7 +53,8 @@ public abstract class AbstractReceiverWithQueue<A, B, C> implements Runnable, Re
|
||||
private boolean receivedEventDuringTimeout;
|
||||
|
||||
public AbstractReceiverWithQueue(DomainFactory domainFactory, IEvent tractracEvent,
|
||||
DynamicTrackedRegatta trackedRegatta, Simulator simulator, IEventSubscriber eventSubscriber, IRaceSubscriber raceSubscriber) {
|
||||
DynamicTrackedRegatta trackedRegatta, Simulator simulator, IEventSubscriber eventSubscriber, IRaceSubscriber raceSubscriber,
|
||||
long timeoutInMilliseconds) {
|
||||
super();
|
||||
this.eventSubscriber = eventSubscriber;
|
||||
this.raceSubscriber = raceSubscriber;
|
||||
@@ -63,6 +65,7 @@ public abstract class AbstractReceiverWithQueue<A, B, C> implements Runnable, Re
|
||||
this.queue = new LinkedBlockingDeque<Util.Triple<A, B, C>>();
|
||||
this.thread = new Thread(this, getClass().getName());
|
||||
this.loadingQueueDoneCallBacks = new HashMap<>();
|
||||
this.timeoutInMilliseconds = timeoutInMilliseconds;
|
||||
}
|
||||
|
||||
protected IEventSubscriber getEventSubscriber() {
|
||||
@@ -200,8 +203,7 @@ public abstract class AbstractReceiverWithQueue<A, B, C> implements Runnable, Re
|
||||
*/
|
||||
protected DynamicTrackedRace getTrackedRace(IRace race) {
|
||||
DynamicTrackedRace result = null;
|
||||
RaceDefinition raceDefinition = getDomainFactory().getAndWaitForRaceDefinition(race.getId(),
|
||||
RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS);
|
||||
RaceDefinition raceDefinition = getDomainFactory().getAndWaitForRaceDefinition(race.getId(), timeoutInMilliseconds);
|
||||
if (raceDefinition != null) {
|
||||
com.sap.sailing.domain.base.Regatta domainRegatta = trackedRegatta.getRegatta();
|
||||
if (domainRegatta.getRaceByName(raceDefinition.getName()) != null) {
|
||||
|
||||
+15
-13
@@ -395,7 +395,8 @@ public class DomainFactoryImpl implements DomainFactory {
|
||||
WindStore windStore, long delayToLiveInMillis, Simulator simulator, DynamicRaceDefinitionSet raceDefinitionSetToUpdate,
|
||||
TrackedRegattaRegistry trackedRegattaRegistry, RaceLogResolver raceLogResolver,
|
||||
URI courseDesignUpdateURI, String tracTracUsername, String tracTracPassword,
|
||||
IEventSubscriber eventSubscriber, IRaceSubscriber raceSubscriber, boolean useInternalMarkPassingAlgorithm, ReceiverType... types) {
|
||||
IEventSubscriber eventSubscriber, IRaceSubscriber raceSubscriber, boolean useInternalMarkPassingAlgorithm,
|
||||
long timeoutInMilliseconds, ReceiverType... types) {
|
||||
IEvent tractracEvent = tractracRace.getEvent();
|
||||
Collection<Receiver> result = new ArrayList<Receiver>();
|
||||
for (ReceiverType type : types) {
|
||||
@@ -405,24 +406,24 @@ public class DomainFactoryImpl implements DomainFactory {
|
||||
raceDefinitionSetToUpdate, delayToLiveInMillis,
|
||||
WindTrack.DEFAULT_MILLISECONDS_OVER_WHICH_TO_AVERAGE_WIND, simulator, courseDesignUpdateURI,
|
||||
tracTracUsername, tracTracPassword, eventSubscriber, raceSubscriber,
|
||||
useInternalMarkPassingAlgorithm, raceLogResolver));
|
||||
useInternalMarkPassingAlgorithm, raceLogResolver, timeoutInMilliseconds));
|
||||
break;
|
||||
case MARKPOSITIONS:
|
||||
result.add(new MarkPositionReceiver(
|
||||
trackedRegatta, tractracEvent, tractracRace, simulator, this, eventSubscriber, raceSubscriber));
|
||||
trackedRegatta, tractracEvent, tractracRace, simulator, this, eventSubscriber, raceSubscriber, timeoutInMilliseconds));
|
||||
break;
|
||||
case RAWPOSITIONS:
|
||||
result.add(new RawPositionReceiver(
|
||||
trackedRegatta, tractracEvent, this, simulator, eventSubscriber, raceSubscriber));
|
||||
trackedRegatta, tractracEvent, this, simulator, eventSubscriber, raceSubscriber, timeoutInMilliseconds));
|
||||
break;
|
||||
case MARKPASSINGS:
|
||||
if (!useInternalMarkPassingAlgorithm) {
|
||||
result.add(new MarkPassingReceiver(trackedRegatta, tractracEvent, simulator, this, eventSubscriber, raceSubscriber));
|
||||
result.add(new MarkPassingReceiver(trackedRegatta, tractracEvent, simulator, this, eventSubscriber, raceSubscriber, timeoutInMilliseconds));
|
||||
}
|
||||
break;
|
||||
case RACESTARTFINISH:
|
||||
result.add(new RaceStartedAndFinishedReceiver(
|
||||
trackedRegatta, tractracEvent, simulator, this, eventSubscriber, raceSubscriber));
|
||||
trackedRegatta, tractracEvent, simulator, this, eventSubscriber, raceSubscriber, timeoutInMilliseconds));
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -434,12 +435,13 @@ public class DomainFactoryImpl implements DomainFactory {
|
||||
long delayToLiveInMillis, Simulator simulator, WindStore windStore,
|
||||
DynamicRaceDefinitionSet raceDefinitionSetToUpdate, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogResolver raceLogResolver,
|
||||
IRace tractracRace, URI courseDesignUpdateURI,
|
||||
String tracTracUsername, String tracTracPassword, IEventSubscriber eventSubscriber, IRaceSubscriber raceSubscriber, boolean useInternalMarkPassingAlgorithm) {
|
||||
String tracTracUsername, String tracTracPassword, IEventSubscriber eventSubscriber, IRaceSubscriber raceSubscriber,
|
||||
boolean useInternalMarkPassingAlgorithm, long timeoutInMilliseconds) {
|
||||
return getUpdateReceivers(trackedRegatta, tractracRace, windStore, delayToLiveInMillis, simulator,
|
||||
raceDefinitionSetToUpdate, trackedRegattaRegistry, raceLogResolver, courseDesignUpdateURI,
|
||||
tracTracUsername, tracTracPassword, eventSubscriber, raceSubscriber,
|
||||
useInternalMarkPassingAlgorithm, ReceiverType.RACECOURSE, ReceiverType.MARKPASSINGS,
|
||||
ReceiverType.MARKPOSITIONS, ReceiverType.RACESTARTFINISH, ReceiverType.RAWPOSITIONS);
|
||||
useInternalMarkPassingAlgorithm, timeoutInMilliseconds, ReceiverType.RACECOURSE,
|
||||
ReceiverType.MARKPASSINGS, ReceiverType.MARKPOSITIONS, ReceiverType.RACESTARTFINISH, ReceiverType.RAWPOSITIONS);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -653,18 +655,18 @@ public class DomainFactoryImpl implements DomainFactory {
|
||||
|
||||
@Override
|
||||
public TracTracRaceTracker createRaceTracker(RaceLogStore raceLogStore, RegattaLogStore regattaLogStore, WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry,
|
||||
RaceLogResolver raceLogResolver, RaceTrackingConnectivityParametersImpl connectivityParams) throws MalformedURLException,
|
||||
RaceLogResolver raceLogResolver, RaceTrackingConnectivityParametersImpl connectivityParams, long timeoutInMilliseconds) throws MalformedURLException,
|
||||
FileNotFoundException, URISyntaxException, CreateModelException, SubscriberInitializationException {
|
||||
return new TracTracRaceTrackerImpl(this, raceLogStore, regattaLogStore, windStore, trackedRegattaRegistry, raceLogResolver, connectivityParams);
|
||||
return new TracTracRaceTrackerImpl(this, raceLogStore, regattaLogStore, windStore, trackedRegattaRegistry, raceLogResolver, connectivityParams, timeoutInMilliseconds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RaceTracker createRaceTracker(Regatta regatta, RaceLogStore raceLogStore, RegattaLogStore regattaLogStore, WindStore windStore,
|
||||
TrackedRegattaRegistry trackedRegattaRegistry, RaceLogResolver raceLogResolver, RaceTrackingConnectivityParametersImpl connectivityParams)
|
||||
TrackedRegattaRegistry trackedRegattaRegistry, RaceLogResolver raceLogResolver, RaceTrackingConnectivityParametersImpl connectivityParams, long timeoutInMilliseconds)
|
||||
throws MalformedURLException, FileNotFoundException, URISyntaxException, CreateModelException,
|
||||
SubscriberInitializationException {
|
||||
return new TracTracRaceTrackerImpl(regatta, this, raceLogStore, regattaLogStore, windStore, trackedRegattaRegistry,
|
||||
raceLogResolver, connectivityParams);
|
||||
raceLogResolver, connectivityParams, timeoutInMilliseconds);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+3
-2
@@ -33,8 +33,9 @@ public class MarkPassingReceiver extends AbstractReceiverWithQueue<IRaceCompetit
|
||||
private final IControlPassingsListener listener;
|
||||
|
||||
public MarkPassingReceiver(DynamicTrackedRegatta trackedRegatta, IEvent tractracEvent,
|
||||
Simulator simulator, DomainFactory domainFactory, IEventSubscriber eventSubscriber, IRaceSubscriber raceSubscriber) {
|
||||
super(domainFactory, tractracEvent, trackedRegatta, simulator, eventSubscriber, raceSubscriber);
|
||||
Simulator simulator, DomainFactory domainFactory, IEventSubscriber eventSubscriber,
|
||||
IRaceSubscriber raceSubscriber, long timeoutInMilliseconds) {
|
||||
super(domainFactory, tractracEvent, trackedRegatta, simulator, eventSubscriber, raceSubscriber, timeoutInMilliseconds);
|
||||
listener = new IControlPassingsListener() {
|
||||
@Override
|
||||
public void gotControlPassings(IRaceCompetitor raceCompetitor, IControlPassings controlPassings) {
|
||||
|
||||
+3
-2
@@ -44,8 +44,9 @@ public class MarkPositionReceiver extends AbstractReceiverWithQueue<IControl, IP
|
||||
final IControlPointPositionListener listener;
|
||||
|
||||
public MarkPositionReceiver(final DynamicTrackedRegatta trackedRegatta, IEvent tractracEvent,
|
||||
IRace tractracRace, Simulator simulator, final DomainFactory domainFactory, IEventSubscriber eventSubscriber, IRaceSubscriber raceSubscriber) {
|
||||
super(domainFactory, tractracEvent, trackedRegatta, simulator, eventSubscriber, raceSubscriber);
|
||||
IRace tractracRace, Simulator simulator, final DomainFactory domainFactory, IEventSubscriber eventSubscriber,
|
||||
IRaceSubscriber raceSubscriber, long timeoutInMilliseconds) {
|
||||
super(domainFactory, tractracEvent, trackedRegatta, simulator, eventSubscriber, raceSubscriber, timeoutInMilliseconds);
|
||||
// assumption: there is currently only one race per TracTrac Event object
|
||||
this.tractracRace = tractracRace;
|
||||
if (tractracEvent.getRaces().isEmpty()) {
|
||||
|
||||
+2
-2
@@ -69,8 +69,8 @@ public class RaceCourseReceiver extends AbstractReceiverWithQueue<IControlRoute,
|
||||
long delayToLiveInMillis, long millisecondsOverWhichToAverageWind, Simulator simulator,
|
||||
URI courseDesignUpdateURI, String tracTracUsername, String tracTracPassword,
|
||||
IEventSubscriber eventSubscriber, IRaceSubscriber raceSubscriber, boolean useInternalMarkPassingAlgorithm,
|
||||
RaceLogResolver raceLogResolver) {
|
||||
super(domainFactory, tractracEvent, trackedRegatta, simulator, eventSubscriber, raceSubscriber);
|
||||
RaceLogResolver raceLogResolver, long timeoutInMilliseconds) {
|
||||
super(domainFactory, tractracEvent, trackedRegatta, simulator, eventSubscriber, raceSubscriber, timeoutInMilliseconds);
|
||||
this.tractracRace = tractracRace;
|
||||
this.raceLogResolver = raceLogResolver;
|
||||
this.millisecondsOverWhichToAverageWind = millisecondsOverWhichToAverageWind;
|
||||
|
||||
+2
-2
@@ -34,8 +34,8 @@ public class RaceStartedAndFinishedReceiver extends AbstractReceiverWithQueue<IR
|
||||
|
||||
public RaceStartedAndFinishedReceiver(DynamicTrackedRegatta trackedRegatta, IEvent tractracEvent,
|
||||
Simulator simulator, DomainFactory domainFactory, IEventSubscriber eventSubscriber,
|
||||
IRaceSubscriber raceSubscriber) {
|
||||
super(domainFactory, tractracEvent, trackedRegatta, simulator, eventSubscriber, raceSubscriber);
|
||||
IRaceSubscriber raceSubscriber, long timeoutInMilliseconds) {
|
||||
super(domainFactory, tractracEvent, trackedRegatta, simulator, eventSubscriber, raceSubscriber, timeoutInMilliseconds);
|
||||
listener = new IRaceStartStopTimesChangeListener() {
|
||||
@Override
|
||||
public void gotTrackingStartStopTime(IRace race, IStartStopData startStopData) {
|
||||
|
||||
+4
-4
@@ -108,17 +108,17 @@ public class RaceTrackingConnectivityParametersImpl extends AbstractRaceTracking
|
||||
|
||||
@Override
|
||||
public RaceTracker createRaceTracker(TrackedRegattaRegistry trackedRegattaRegistry, WindStore windStore,
|
||||
RaceLogResolver raceLogResolver) throws MalformedURLException, FileNotFoundException, URISyntaxException,
|
||||
RaceLogResolver raceLogResolver, long timeoutInMilliseconds) throws MalformedURLException, FileNotFoundException, URISyntaxException,
|
||||
CreateModelException, SubscriberInitializationException {
|
||||
RaceTracker tracker = domainFactory.createRaceTracker(raceLogStore, regattaLogStore, windStore, trackedRegattaRegistry, raceLogResolver, this);
|
||||
RaceTracker tracker = domainFactory.createRaceTracker(raceLogStore, regattaLogStore, windStore, trackedRegattaRegistry, raceLogResolver, this, timeoutInMilliseconds);
|
||||
return tracker;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RaceTracker createRaceTracker(Regatta regatta, TrackedRegattaRegistry trackedRegattaRegistry,
|
||||
WindStore windStore, RaceLogResolver raceLogResolver) throws Exception {
|
||||
WindStore windStore, RaceLogResolver raceLogResolver, long timeoutInMilliseconds) throws Exception {
|
||||
RaceTracker tracker = domainFactory.createRaceTracker(regatta, raceLogStore, regattaLogStore, windStore,
|
||||
trackedRegattaRegistry, raceLogResolver, this);
|
||||
trackedRegattaRegistry, raceLogResolver, this, timeoutInMilliseconds);
|
||||
return tracker;
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -24,8 +24,9 @@ public class RawPositionReceiver extends AbstractReceiverWithQueue<IRaceCompetit
|
||||
private final IPositionListener listener;
|
||||
|
||||
public RawPositionReceiver(DynamicTrackedRegatta trackedRegatta, IEvent tractracEvent,
|
||||
DomainFactory domainFactory, Simulator simulator, IEventSubscriber eventSubscriber, IRaceSubscriber raceSubscriber) {
|
||||
super(domainFactory, tractracEvent, trackedRegatta, simulator, eventSubscriber, raceSubscriber);
|
||||
DomainFactory domainFactory, Simulator simulator, IEventSubscriber eventSubscriber,
|
||||
IRaceSubscriber raceSubscriber, long timeoutInMilliseconds) {
|
||||
super(domainFactory, tractracEvent, trackedRegatta, simulator, eventSubscriber, raceSubscriber, timeoutInMilliseconds);
|
||||
listener = new IPositionListener() {
|
||||
@Override
|
||||
public void gotPosition(IRaceCompetitor controlPoint, IPosition position) {
|
||||
|
||||
+14
-4
@@ -36,6 +36,7 @@ import com.sap.sailing.domain.tracking.DynamicRaceDefinitionSet;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRegatta;
|
||||
import com.sap.sailing.domain.tracking.RaceHandle;
|
||||
import com.sap.sailing.domain.tracking.RaceTracker;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sailing.domain.tracking.TrackedRaceStatus;
|
||||
import com.sap.sailing.domain.tracking.TrackedRegatta;
|
||||
@@ -242,13 +243,17 @@ public class TracTracRaceTrackerImpl extends AbstractRaceTrackerImpl
|
||||
* available but loses track of the wind, e.g., during server restarts.
|
||||
* @param trackedRegattaRegistry
|
||||
* used to create the {@link TrackedRegatta} for the domain event
|
||||
* @param timeoutInMilliseconds
|
||||
* use -1 to wait for the race and all its data forever; otherwise specify the milliseconds after which
|
||||
* you expect things to have loaded; see also
|
||||
* {@link RaceTracker#TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS}.
|
||||
*/
|
||||
TracTracRaceTrackerImpl(DomainFactory domainFactory, RaceLogStore raceLogStore,
|
||||
RegattaLogStore regattaLogStore, WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry,
|
||||
RaceLogResolver raceLogResolver, RaceTrackingConnectivityParametersImpl connectivityParams)
|
||||
RaceLogResolver raceLogResolver, RaceTrackingConnectivityParametersImpl connectivityParams, long timeoutInMilliseconds)
|
||||
throws URISyntaxException, MalformedURLException, FileNotFoundException, SubscriberInitializationException {
|
||||
this(/* regatta */ null, domainFactory, raceLogStore, regattaLogStore, windStore, trackedRegattaRegistry,
|
||||
raceLogResolver, connectivityParams);
|
||||
raceLogResolver, connectivityParams, timeoutInMilliseconds);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -260,10 +265,14 @@ public class TracTracRaceTrackerImpl extends AbstractRaceTrackerImpl
|
||||
* @param regatta
|
||||
* if <code>null</code>, then <code>domainFactory.getOrCreateRegatta(tractracEvent)</code> will be used
|
||||
* to obtain a default regatta
|
||||
* @param timeoutInMilliseconds
|
||||
* use -1 to wait for the race and all its data forever; otherwise specify the milliseconds after which
|
||||
* you expect things to have loaded; see also
|
||||
* {@link RaceTracker#TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS}.
|
||||
*/
|
||||
TracTracRaceTrackerImpl(final Regatta regatta, DomainFactory domainFactory, RaceLogStore raceLogStore,
|
||||
RegattaLogStore regattaLogStore, WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry,
|
||||
RaceLogResolver raceLogResolver, RaceTrackingConnectivityParametersImpl connectivityParams)
|
||||
RaceLogResolver raceLogResolver, RaceTrackingConnectivityParametersImpl connectivityParams, long timeoutInMilliseconds)
|
||||
throws URISyntaxException, MalformedURLException, FileNotFoundException, SubscriberInitializationException {
|
||||
super(connectivityParams);
|
||||
final URL paramURL = connectivityParams.getParamURL();
|
||||
@@ -372,7 +381,8 @@ public class TracTracRaceTrackerImpl extends AbstractRaceTrackerImpl
|
||||
receivers = new HashSet<Receiver>();
|
||||
for (Receiver receiver : domainFactory.getUpdateReceivers(getTrackedRegatta(), delayToLiveInMillis,
|
||||
simulator, windStore, this, trackedRegattaRegistry, raceLogResolver, tractracRace,
|
||||
tracTracUpdateURI, tracTracUsername, tracTracPassword, eventSubscriber, raceSubscriber, useInternalMarkPassingAlgorithm)) {
|
||||
tracTracUpdateURI, tracTracUsername, tracTracPassword, eventSubscriber, raceSubscriber,
|
||||
useInternalMarkPassingAlgorithm, timeoutInMilliseconds)) {
|
||||
receivers.add(receiver);
|
||||
}
|
||||
addListenersForStoredDataAndStartController(receivers);
|
||||
|
||||
Reference in new issue
Block a user