Package jsl.modeling.resource
Class ResourcePoolWithQ
- java.lang.Object
-
- jsl.simulation.ModelElement
-
- jsl.modeling.resource.ResourcePool
-
- jsl.modeling.resource.ResourcePoolWithQ
-
- All Implemented Interfaces:
RandomElementIfc
,SeizeableIfc
,ObservableIfc
,StreamOptionIfc
,GetNameIfc
,IdentityIfc
,GetRandomNumberStreamIfc
,RNStreamControlIfc
,SetRandomNumberStreamIfc
public class ResourcePoolWithQ extends ResourcePool implements SeizeableIfc
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class jsl.modeling.resource.ResourcePool
ResourcePool.DescendingByNumIdleComparator, ResourcePool.ResourceUnitObserver
-
Nested classes/interfaces inherited from class jsl.simulation.ModelElement
ModelElement.EventBuilderIfc<T>, ModelElement.EventScheduler<T>, ModelElement.ModelElementComparator, ModelElement.RequestBuilder, ModelElement.RequestDurationIfc, ModelElement.RequestTimeIfc, ModelElement.RequestUsingIfc, ModelElement.TimedUpdateEventAction, ModelElement.TimeUnitIfc<T>, ModelElement.WarmUpEventAction
-
-
Field Summary
-
Fields inherited from class jsl.modeling.resource.ResourcePool
myNumBusy, myNumFailed, myNumIdle, myNumInactive, myResetNextSubStreamOption, myResetStartStreamOption, myResources, myRUObserver, myUtilization
-
Fields inherited from class jsl.simulation.ModelElement
AFTER_EXPERIMENT, AFTER_REPLICATION, BEFORE_EXPERIMENT, BEFORE_REPLICATION, CONDITIONAL_ACTION_REGISTRATION, DEFAULT_TIMED_EVENT_PRIORITY, INITIALIZED, MONTE_CARLO, myAfterExperimentOption, myAfterReplicationOption, myBeforeExperimentOption, myBeforeReplicationOption, myInitializationOption, myLengthOfWarmUp, myModelElements, myMonteCarloOption, myObservableComponent, myReplicationEndedOption, myTimedUpdateActionListener, myTimedUpdateEvent, myTimedUpdateInterval, myTimedUpdateOption, myTimedUpdatePriority, myWarmUpActionListener, myWarmUpEvent, myWarmUpIndicator, myWarmUpOption, myWarmUpPriority, NONE, REMOVED_FROM_MODEL, REPLICATION_ENDED, TIME_UNIT_DAY, TIME_UNIT_HOUR, TIME_UNIT_MILLISECOND, TIME_UNIT_MINUTE, TIME_UNIT_SECOND, TIME_UNIT_WEEK, TIMED_UPDATE, UPDATE, WARMUP
-
-
Constructor Summary
Constructors Constructor Description ResourcePoolWithQ(ModelElement parent, java.util.List<ResourceUnit> units)
ResourcePoolWithQ(ModelElement parent, java.util.List<ResourceUnit> units, boolean poolStatOption, boolean requestQStatsOption)
ResourcePoolWithQ(ModelElement parent, java.util.List<ResourceUnit> units, boolean poolStatOption, boolean requestQStatsOption, java.lang.String name)
ResourcePoolWithQ(ModelElement parent, java.util.List<ResourceUnit> units, java.lang.String name)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
addQueueListener(QueueListenerIfc<Request> listener)
void
changePriority(Request qObject, int priority)
void
changeQDiscipline(Queue.Discipline discipline)
Queue.Discipline
getCurrentQDiscipline()
Queue.Discipline
getInitialQDiscipline()
java.util.Optional<QueueResponse<Request>>
getQueueResponses()
boolean
getQueueStatsOption()
Queue.Status
getRequestQStatus()
java.util.List<Request>
getUnmodifiableListOfRequestQ()
boolean
isQueue(Queue queue)
boolean
isRequestQEmpty()
boolean
removeQueueListener(QueueListenerIfc<Request> listener)
int
requestQSize()
Request
seize(Request request)
Causes the request to enter the resource.void
setInitialQDiscipline(Queue.Discipline discipline)
protected void
unitBecameIdle(ResourceUnit ru)
Called when one of the units becomes idle-
Methods inherited from class jsl.modeling.resource.ResourcePool
add, addAll, advanceToNextSubstream, afterReplication, beforeExperiment, collectStateStatistics, contains, findFirstIdle, findIdleResourceUnits, getAntitheticOption, getDescendingByNumIdleComparator, getFailureDelayOption, getInactivePeriodDelayOption, getNumBusy, getNumFailed, getNumIdle, getNumInactive, getNumUnits, getRandomNumberStream, getResetNextSubStreamOption, getResetStartStreamOption, getSelectionRule, getUnits, hasAllUnitsBusy, hasAllUnitsFailed, hasAllUnitsIdle, hasAllUnitsInactive, hasBusyUnits, hasFailedUnits, hasFailureProcesses, hasIdleUnits, hasInactiveUnits, hasSchedules, isPooledStatsOptionOn, isPreemptionRuleCompatible, randomlySelectResourceUnit, replicationEnded, resetStartStream, resetStartSubstream, resourceUnitChanged, selectResourceUnit, setAntitheticOption, setRandomNumberStream, setResetNextSubStreamOption, setResetStartStreamOption, setSelectionRule, unitBecameBusy, unitBecameInactive, unitFailed, useSchedule
-
Methods inherited from class jsl.simulation.ModelElement
addObserver, addObserverToModelElements, afterExperiment, afterExperiment_, afterReplication_, asString, beforeExperiment_, beforeReplication, beforeReplication_, buildEventGenerator, cancelTimedUpdateEvent, cancelWarmUpEvent, changeParentModelElement, checkForAfterExperiment, checkForAfterReplication, checkForBeforeExperiment, checkForBeforeReplication, checkForConditionalActionRegistration, checkForInitialize, checkForMonteCarlo, checkForRemoveFromModel, checkForReplicationEnded, checkForTimedUpdate, checkForUpdate, checkForWarmUp, checkObserverState, checkWarmUpOption, clearModelElementObservers, contains, countObservers, createEntity, createEntity, createQObject, day, deleteObserver, deleteObserverFromModelElements, deleteObservers, findModelElementWithWarmUpEvent, getAfterExperimentOption, getAfterReplicationOption, getAllCounters, getAllModelElements, getAllRandomElements, getAllResponseVariables, getAllVariables, getBeforeExperimentOption, getBeforeReplicationOption, getChildModelElementIterator, getCurrentReplicationNumber, getDefaultEntityType, getExecutive, getExperiment, getId, getInitializationOption, getInitializationOrderAsString, getLeftPreOrderTraversalCount, getLengthOfWarmUp, getModel, getModelElementCompartor, getModelElementsAsString, getModelElementsAsString, getModelElementsAsString, getMonteCarloOption, getName, getNumberOfModelElements, getObserverState, getParentModelElement, getPreviousObserverState, getReplicationEndedOption, getRightPreOrderTraversalCount, getSimulation, getSpatialModel, getStringLabel, getThisElementsCounters, getThisElementsModelElements, getThisElementsRandomVariables, getThisElementsResponseVariables, getThisElementsVariables, getTime, getTimedUpdateInterval, getTimedUpdateOption, getUpdateNotificationFlag, getVariable, getWarmUpEventTime, getWarmUpOption, hour, indent, initialize, initialize_, isTimedUpdateEventScheduled, isWarmedUp, isWarmUpEventScheduled, isWarmUpScheduled, millisecond, minute, montecarlo, montecarlo_, notifyAfterExperimentObservers, notifyAfterReplicationObservers, notifyBeforeExperimentObservers, notifyBeforeReplicationObservers, notifyConditionalActionRegistrationObservers, notifyInitializationObservers, notifyMonteCarloObservers, notifyObservers, notifyObservers, notifyRemovingFromModelObservers, notifyReplicationEndedObservers, notifyTimedUpdateObservers, notifyUpdateObservers, notifyWarmUpObservers, registerConditionalActions, registerConditionalActions_, removedFromModel, removeFromModel, replicationEnded_, schedule, second, seize, setAfterExperimentOption, setAfterExperimentOptionForModelElements, setAfterReplicationOption, setAfterReplicationOptionForModelElements, setBeforeExperimentOption, setBeforeExperimentOptionForModelElements, setBeforeReplicationOption, setBeforeReplicationOptionForModelElements, setInitializationOption, setInitializationOptionForModelElements, setLengthOfWarmUp, setModel, setMonteCarloOption, setMonteCarloOptionForModelElements, setName, setObserverState, setParentModelElement, setReplicationEndedOption, setReplicationEndedOptionForModelElements, setSpatialModel, setStringLabel, setTimedUpdateInterval, setTimedUpdateOption, setTimedUpdateOptionForModelElements, setUpdateNotificationFlag, setWarmUpOption, setWarmUpOptionForModelElements, stopExecutive, stopExecutive, timedUpdate, timedUpdate_, toString, update, useControls, warmUp, warmUp_, week
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface jsl.utilities.random.rng.GetRandomNumberStreamIfc
getStreamNumber
-
Methods inherited from interface jsl.utilities.random.rng.SetRandomNumberStreamIfc
setRandomNumberStream
-
-
-
-
Constructor Detail
-
ResourcePoolWithQ
public ResourcePoolWithQ(ModelElement parent, java.util.List<ResourceUnit> units)
-
ResourcePoolWithQ
public ResourcePoolWithQ(ModelElement parent, java.util.List<ResourceUnit> units, java.lang.String name)
-
ResourcePoolWithQ
public ResourcePoolWithQ(ModelElement parent, java.util.List<ResourceUnit> units, boolean poolStatOption, boolean requestQStatsOption)
-
ResourcePoolWithQ
public ResourcePoolWithQ(ModelElement parent, java.util.List<ResourceUnit> units, boolean poolStatOption, boolean requestQStatsOption, java.lang.String name)
-
-
Method Detail
-
isQueue
public final boolean isQueue(Queue queue)
-
getQueueResponses
public final java.util.Optional<QueueResponse<Request>> getQueueResponses()
-
getQueueStatsOption
public final boolean getQueueStatsOption()
-
getUnmodifiableListOfRequestQ
public final java.util.List<Request> getUnmodifiableListOfRequestQ()
-
addQueueListener
public final boolean addQueueListener(QueueListenerIfc<Request> listener)
-
removeQueueListener
public boolean removeQueueListener(QueueListenerIfc<Request> listener)
-
getRequestQStatus
public final Queue.Status getRequestQStatus()
-
changeQDiscipline
public final void changeQDiscipline(Queue.Discipline discipline)
-
getCurrentQDiscipline
public final Queue.Discipline getCurrentQDiscipline()
-
changePriority
public final void changePriority(Request qObject, int priority)
-
getInitialQDiscipline
public final Queue.Discipline getInitialQDiscipline()
-
setInitialQDiscipline
public final void setInitialQDiscipline(Queue.Discipline discipline)
-
requestQSize
public final int requestQSize()
-
isRequestQEmpty
public final boolean isRequestQEmpty()
-
seize
public Request seize(Request request)
Description copied from interface:SeizeableIfc
Causes the request to enter the resource. If the resource is idle, the request will be using the resource. If the resource is not idle the request will wait. A Request will be rejected if its preemption rule is NONE and the ResourceUnit's failure delay option is false. This implies that the Request cannot be processed by the ResourceUnit because the request cannot be preempted and the resource unit does not permit its failures to delay (i.e. they must preempt).- Specified by:
seize
in interfaceSeizeableIfc
- Parameters:
request
- a request made by this unit- Returns:
- the request is returned to emphasize that the user may want to check its state
-
unitBecameIdle
protected void unitBecameIdle(ResourceUnit ru)
Description copied from class:ResourcePool
Called when one of the units becomes idle- Overrides:
unitBecameIdle
in classResourcePool
- Parameters:
ru
- the unit that became idle
-
-