Class StandardRetryingRequestResolver
- All Implemented Interfaces:
IRequester,IQueuedRequestResolver<IRetryable>,IRequestResolver<IRetryable>,IRetryingRequestResolver,ITickable
-
Constructor Summary
ConstructorsConstructorDescriptionStandardRetryingRequestResolver(IFactoryController factoryController, IRequestManager manager) StandardRetryingRequestResolver(IToken<?> id, ILocation location) -
Method Summary
Modifier and TypeMethodDescriptionattemptResolveRequest(@NotNull IRequestManager manager, @NotNull IRequest<? extends IRetryable> request) Method used to attempt a resolving operation.booleancanResolveRequest(@NotNull IRequestManager manager, IRequest<? extends IRetryable> requestToCheck) A PreCheck used to determine if this request resolver is able to resolve a given request.com.google.common.collect.ImmutableList<IToken<?>> Method to get a list of all assigned tokens to this resolver.@Nullable IToken<?> Method to get the token of the request that is currently being reassignedintThe current attempt to be reassigned.getFollowupRequestForCompletion(@NotNull IRequestManager manager, @NotNull IRequest<? extends IRetryable> completedRequest) IToken<?> getId()Method to get the ID of a given requester.@NotNull ILocationMethod to get the location of this locatable.intMethod to get the maximal ticks between retries.intMethod to get the maximal amount of tries that is resolver attempts.intThe priority of this resolver.@NotNull net.minecraft.network.chat.MutableComponentgetRequesterDisplayName(@NotNull IRequestManager manager, @NotNull IRequest<?> request) Gets the name of the requester that requested the request given by the token.com.google.common.reflect.TypeToken<? extends IRetryable> Used to determine which type of requests can be resolved by this Resolver.booleanisValid()If this resolver has valid data in it.voidonAssignedRequestBeingCancelled(@NotNull IRequestManager manager, @NotNull IRequest<? extends IRetryable> request) Indicates that an assigned request has been cancelled.voidonAssignedRequestCancelled(@NotNull IRequestManager manager, @NotNull IRequest<? extends IRetryable> request) Indicates that an assigned request has been cancelled.voidonColonyUpdate(@NotNull IRequestManager manager, @NotNull Predicate<IRequest<?>> shouldTriggerReassign) Called by manager given to indicate that a colony has updated their available items.voidonRequestedRequestCancelled(@NotNull IRequestManager manager, @NotNull IRequest<?> request) Method called by the request system to notify this requester that a request has been overruled.voidonRequestedRequestComplete(@NotNull IRequestManager manager, @NotNull IRequest<?> request) Method called by the request system to notify this requester that a request is complete.voidCalled when the request system this is part of gets reset.voidresolveRequest(@NotNull IRequestManager manager, @NotNull IRequest<? extends IRetryable> request) Method used to resolve a given request.voidsetCurrent(@Nullable IToken<?> token) voidtick()Default parameterless ticking implementation.voidupdateData(@NotNull Map<IToken<?>, Integer> newAssignedRequests, @NotNull Map<IToken<?>, Integer> newDelays) voidupdateManager(IRequestManager manager) Update the associated manager data that links this resolver to a manager.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.minecolonies.api.colony.requestsystem.resolver.IRequestResolver
getSuitabilityMetric, onRequestAssignedMethods inherited from interface com.minecolonies.api.colony.requestsystem.resolver.retrying.IRetryingRequestResolver
isReassigning
-
Constructor Details
-
StandardRetryingRequestResolver
public StandardRetryingRequestResolver(IFactoryController factoryController, IRequestManager manager) -
StandardRetryingRequestResolver
-
-
Method Details
-
updateManager
Description copied from interface:IRetryingRequestResolverUpdate the associated manager data that links this resolver to a manager.- Specified by:
updateManagerin interfaceIRetryingRequestResolver- Parameters:
manager- the new associated manager.
-
getMaximalTries
public int getMaximalTries()Description copied from interface:IRetryingRequestResolverMethod to get the maximal amount of tries that is resolver attempts.- Specified by:
getMaximalTriesin interfaceIRetryingRequestResolver- Returns:
- The maximal amount of tries.
-
getMaximalDelayBetweenRetriesInTicks
public int getMaximalDelayBetweenRetriesInTicks()Description copied from interface:IRetryingRequestResolverMethod to get the maximal ticks between retries.- Specified by:
getMaximalDelayBetweenRetriesInTicksin interfaceIRetryingRequestResolver- Returns:
- The maximal amount of ticks between retries.
-
getCurrentReassignmentAttempt
public int getCurrentReassignmentAttempt()Description copied from interface:IRetryingRequestResolverThe current attempt to be reassigned.- Specified by:
getCurrentReassignmentAttemptin interfaceIRetryingRequestResolver- Returns:
- The current attempt of reassignment. -1 if none is undertaken.
-
getCurrentlyBeingReassignedRequest
Description copied from interface:IRetryingRequestResolverMethod to get the token of the request that is currently being reassigned- Specified by:
getCurrentlyBeingReassignedRequestin interfaceIRetryingRequestResolver- Returns:
- The token of the quest that is being reassigned, null if no reassignment is being performed.
-
getRequestType
Description copied from interface:IRequestResolverUsed to determine which type of requests can be resolved by this Resolver.- Specified by:
getRequestTypein interfaceIRequestResolver<IRetryable>- Returns:
- The class that represents this Type of Request this resolver can resolve.
-
canResolveRequest
public boolean canResolveRequest(@NotNull @NotNull IRequestManager manager, IRequest<? extends IRetryable> requestToCheck) Description copied from interface:IRequestResolverA PreCheck used to determine if this request resolver is able to resolve a given request. Should quickly and cheaply check if this resolver COULD resolve this request.- Specified by:
canResolveRequestin interfaceIRequestResolver<IRetryable>- Parameters:
manager- The manager that is checking if this resolver could resolve that request.requestToCheck- The request to check.- Returns:
- True when this resolver COULD resolve the given request, false when not.
-
attemptResolveRequest
@Nullable public @Nullable List<IToken<?>> attemptResolveRequest(@NotNull @NotNull IRequestManager manager, @NotNull @NotNull IRequest<? extends IRetryable> request) Description copied from interface:IRequestResolverMethod used to attempt a resolving operation.When this attempt was successful a List with tokens of required requests is returned. This list maybe empty. The list should indicate all sub requests that should be fullfilled before the @code{resolve(IRequest request)} method is called.
When this attempt was not successful, eg. this resolver could not schedule a crafting operation, a Null object should be returned. In that case the next resolver will be tried by the manager.
IT IS VITAL THAT THE REQUEST RETURNED ARE NOT YET ASSIGNED. SIMULATION AND OTHER STRATEGIES WILL FAIL ELSE! THE MANAGER GIVEN WILL HANDLE ASSIGNING HIMSELF!
- Specified by:
attemptResolveRequestin interfaceIRequestResolver<IRetryable>- Parameters:
manager- The manager that is attempting to resolve using this resolver.request- The request to resolve.- Returns:
- The tokens of required requests if the attempt was successful (an empty list is allowed to indicate no requirements), null if the attempt failed.
-
resolveRequest
public void resolveRequest(@NotNull @NotNull IRequestManager manager, @NotNull @NotNull IRequest<? extends IRetryable> request) throws RuntimeException Description copied from interface:IRequestResolverMethod used to resolve a given request. Is called the moment all Child requests are resolved.The resolver should update the state through the given manager.
When this method is called all requirements need be fullfilled for this resolver. If this is not the case it will throw a RunTimeException
- Specified by:
resolveRequestin interfaceIRequestResolver<IRetryable>- Parameters:
manager- The manager that is resolving this request, under normal conditions this is the colony manager.request- The request to resolve.- Throws:
RuntimeException- is thrown when the resolver could not resolve the request. Should never happen as attemptResolve should be called first, and all requirements should be available to this resolver at this point in time.
-
getFollowupRequestForCompletion
@Nullable public @Nullable List<IRequest<?>> getFollowupRequestForCompletion(@NotNull @NotNull IRequestManager manager, @NotNull @NotNull IRequest<? extends IRetryable> completedRequest) - Specified by:
getFollowupRequestForCompletionin interfaceIRequestResolver<IRetryable>
-
onAssignedRequestBeingCancelled
@Nullable public void onAssignedRequestBeingCancelled(@NotNull @NotNull IRequestManager manager, @NotNull @NotNull IRequest<? extends IRetryable> request) Description copied from interface:IRequestResolverIndicates that an assigned request has been cancelled. Is called before graph is updated.- Specified by:
onAssignedRequestBeingCancelledin interfaceIRequestResolver<IRetryable>- Parameters:
manager- The manager that indicates the cancellingrequest- The request that has been cancelled.
-
onAssignedRequestCancelled
public void onAssignedRequestCancelled(@NotNull @NotNull IRequestManager manager, @NotNull @NotNull IRequest<? extends IRetryable> request) Description copied from interface:IRequestResolverIndicates that an assigned request has been cancelled. Is called after the graph has been updated.- Specified by:
onAssignedRequestCancelledin interfaceIRequestResolver<IRetryable>- Parameters:
manager- The manager that indicates the cancellingrequest- The request that has been cancelled.
-
getPriority
public int getPriority()Description copied from interface:IRequestResolverThe priority of this resolver. The higher the priority the earlier this resolver is called.- Specified by:
getPriorityin interfaceIRequestResolver<IRetryable>- Returns:
- The priority of this resolver.
-
tick
public void tick()Description copied from interface:ITickableDefault parameterless ticking implementation. -
getAllAssignedRequests
Description copied from interface:IQueuedRequestResolverMethod to get a list of all assigned tokens to this resolver.- Specified by:
getAllAssignedRequestsin interfaceIQueuedRequestResolver<IRetryable>- Returns:
- A list of all assigned tokens.
-
onSystemReset
public void onSystemReset()Description copied from interface:IQueuedRequestResolverCalled when the request system this is part of gets reset.- Specified by:
onSystemResetin interfaceIQueuedRequestResolver<IRetryable>
-
setCurrent
-
getId
Description copied from interface:IRequesterMethod to get the ID of a given requester.- Specified by:
getIdin interfaceIRequester- Returns:
- The id of this requester.
-
getLocation
Description copied from interface:IRequesterMethod to get the location of this locatable.- Specified by:
getLocationin interfaceIRequester- Returns:
- the location.
-
onRequestedRequestComplete
public void onRequestedRequestComplete(@NotNull @NotNull IRequestManager manager, @NotNull @NotNull IRequest<?> request) Description copied from interface:IRequesterMethod called by the request system to notify this requester that a request is complete.- Specified by:
onRequestedRequestCompletein interfaceIRequester- Parameters:
manager- the request manager.request- the request.
-
onRequestedRequestCancelled
public void onRequestedRequestCancelled(@NotNull @NotNull IRequestManager manager, @NotNull @NotNull IRequest<?> request) Description copied from interface:IRequesterMethod called by the request system to notify this requester that a request has been overruled.- Specified by:
onRequestedRequestCancelledin interfaceIRequester- Parameters:
manager- the request manager.request- the request.
-
getRequesterDisplayName
@NotNull public @NotNull net.minecraft.network.chat.MutableComponent getRequesterDisplayName(@NotNull @NotNull IRequestManager manager, @NotNull @NotNull IRequest<?> request) Description copied from interface:IRequesterGets the name of the requester that requested the request given by the token.- Specified by:
getRequesterDisplayNamein interfaceIRequester- Parameters:
manager- the request manager.request- the request for which the name of the requester is retrieved- Returns:
- The display name of the requester.
-
updateData
-
getDelays
-
getAssignedRequests
-
onColonyUpdate
public void onColonyUpdate(@NotNull @NotNull IRequestManager manager, @NotNull @NotNull Predicate<IRequest<?>> shouldTriggerReassign) Description copied from interface:IRequestResolverCalled by manager given to indicate that a colony has updated their available items.- Specified by:
onColonyUpdatein interfaceIRequestResolver<IRetryable>- Parameters:
manager- The systems manager.shouldTriggerReassign- The request assigned
-
isValid
public boolean isValid()Description copied from interface:IRequestResolverIf this resolver has valid data in it.- Specified by:
isValidin interfaceIRequestResolver<IRetryable>- Returns:
- true if so.
-