Package jline.lang
Class JobClass
java.lang.Object
jline.lang.Element
jline.lang.NetworkElement
jline.lang.JobClass
- All Implemented Interfaces:
Serializable,Copyable
- Direct Known Subclasses:
ClosedClass,DisabledClass,OpenClass,Signal
Superclass representing a class of jobs
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected booleanprotected doubleprotected intprotected booleanprotected intprotected Stationprotected JobClassType -
Constructor Summary
ConstructorsConstructorDescriptionJobClass(JobClassType type, String name) Creates a new job class with the specified type and name. -
Method Summary
Modifier and TypeMethodDescriptionbooleanChecks if this job class expects a reply signal after processing.Integer[]Gets the global balking strategy for this job class.Gets the global balking thresholds for this job class.booleanChecks if jobs in this class complete their service and leave the system.doubleReturns the relative deadline for jobs in this class.Gets the global impatience type for this job class.intgetIndex()Returns the type of this job class.intGets the maximum number of retrial attempts for this job class.doubleReturns the number of jobs in this class.Gets the global patience distribution for this job class.intReturns the priority level of this job class.Returns the reference station for this job class.intGets the index of the reply signal class.Gets the global retrial delay distribution for this job class.booleanChecks if this job class has balking configured.booleanChecks if immediate feedback is enabled for this job class.booleanChecks if this job class has a patience distribution configured.booleanChecks if this job class has retrial configured.booleanChecks if this is a reference job class within its chain.booleanisReferenceStation(Node node) Checks if the specified node is the reference station for this class.voidPrints a summary of this job class configuration to the console.voidsetAttribute(Integer[] attribute) voidsetBalking(BalkingStrategy strategy, int minJobs, double probability) Sets the global balking configuration using a single threshold.voidsetBalking(BalkingStrategy strategy, List<BalkingThreshold> thresholds) Sets the global balking configuration for this job class using queue-length thresholds.voidsetCompletes(boolean completes) voidsetDeadline(double deadline) Sets the relative deadline for jobs in this class.voidsetImmediateFeedback(boolean enabled) Enables or disables immediate feedback for this job class globally.voidsetPatience(ImpatienceType impatienceType, Distribution distribution) Sets the global impatience type and distribution for this job class.voidsetPatience(Distribution distribution) Sets the global patience distribution for this job class.voidsetPriority(int p) Sets the priority level for this job class.voidsetReferenceClass(boolean isrefclass) Sets whether this job class is a reference class within its chain.voidSets the reference station for this job class.voidsetReplySignalClassIndex(int signalClassIndex) Sets the reply signal class index for synchronous call semantics.voidsetRetrial(Distribution delayDistribution) Sets the global retrial configuration with unlimited retry attempts.voidsetRetrial(Distribution delayDistribution, int maxAttempts) Sets the global retrial configuration for this job class.
-
Field Details
-
type
-
priority
protected int priority -
completes
protected boolean completes -
refstat
-
isrefclass
protected boolean isrefclass -
index
protected int index -
deadline
protected double deadline
-
-
Constructor Details
-
JobClass
Creates a new job class with the specified type and name.- Parameters:
type- the type of job class (OPEN, CLOSED, etc.)name- the name for this job class
-
-
Method Details
-
getAttribute
-
setAttribute
-
getCompletes
public boolean getCompletes()Checks if jobs in this class complete their service and leave the system.- Returns:
- true if jobs complete, false if they remain in the system
-
setCompletes
public void setCompletes(boolean completes) -
getIndex
public int getIndex() -
getJobClassType
Returns the type of this job class.- Returns:
- the job class type (OPEN, CLOSED, etc.)
-
getNumberOfJobs
public double getNumberOfJobs()Returns the number of jobs in this class. Default implementation returns infinite (for open classes).- Returns:
- number of jobs in this class
-
getPriority
public int getPriority()Returns the priority level of this job class. Lower values indicate higher priority (priority 0 is highest).- Returns:
- the priority level
-
setPriority
public void setPriority(int p) Sets the priority level for this job class.- Parameters:
p- the priority level to set
-
getDeadline
public double getDeadline()Returns the relative deadline for jobs in this class. The deadline is specified as time units from job arrival. A value of Double.POSITIVE_INFINITY indicates no deadline constraint.- Returns:
- the relative deadline in time units, or Double.POSITIVE_INFINITY if no deadline
-
setDeadline
public void setDeadline(double deadline) Sets the relative deadline for jobs in this class. Jobs will be assigned an absolute deadline of arrivalTime + deadline when they enter queues with EDD/EDF scheduling.- Parameters:
deadline- the relative deadline in time units (must be > 0), or Double.POSITIVE_INFINITY for no deadline
-
getReferenceStation
Returns the reference station for this job class. The reference station is used for normalization in closed networks.- Returns:
- the reference station, or null if not set
-
setReferenceStation
Sets the reference station for this job class.- Parameters:
ref- the station to use as reference- Throws:
Exception- if the reference station cannot be set
-
isReferenceClass
public boolean isReferenceClass()Checks if this is a reference job class within its chain.- Returns:
- true if this is a reference class
-
setReferenceClass
public void setReferenceClass(boolean isrefclass) Sets whether this job class is a reference class within its chain.- Parameters:
isrefclass- true to make this a reference class
-
isReferenceStation
Checks if the specified node is the reference station for this class.- Parameters:
node- the node to check- Returns:
- true if the node is the reference station
-
setReplySignalClassIndex
public void setReplySignalClassIndex(int signalClassIndex) Sets the reply signal class index for synchronous call semantics. When a job of this class completes service, the server will block until receiving a REPLY signal from the signal class at the specified index.- Parameters:
signalClassIndex- the index of the signal class that will unblock the server
-
getReplySignalClassIndex
public int getReplySignalClassIndex()Gets the index of the reply signal class.- Returns:
- the index of the reply signal class, or -1 if no reply is expected
-
expectsReply
public boolean expectsReply()Checks if this job class expects a reply signal after processing.- Returns:
- true if a reply signal is expected, false otherwise
-
setPatience
Sets the global patience distribution for this job class. This applies to all queues unless overridden by a queue-specific patience setting. Defaults to RENEGING patience type for backwards compatibility.- Parameters:
distribution- the patience time distribution- Throws:
IllegalArgumentException- if distribution is a modulated process or argument is null
-
setPatience
Sets the global impatience type and distribution for this job class. This applies to all queues unless overridden by a queue-specific patience setting.- Parameters:
impatienceType- the type of impatience (RENEGING or BALKING)distribution- the patience time distribution- Throws:
IllegalArgumentException- if distribution is a modulated process or arguments are nullUnsupportedOperationException- if BALKING type is used (not yet supported)
-
getPatience
Gets the global patience distribution for this job class.- Returns:
- the patience distribution, or null if not set
-
getImpatienceType
Gets the global impatience type for this job class.- Returns:
- the impatience type, or null if not set
-
hasPatience
public boolean hasPatience()Checks if this job class has a patience distribution configured.- Returns:
- true if patience is configured, false otherwise
-
setBalking
Sets the global balking configuration for this job class using queue-length thresholds. This applies to all queues unless overridden by a queue-specific balking setting.- Parameters:
strategy- the balking strategy to usethresholds- list of balking thresholds mapping queue lengths to probabilities- Throws:
IllegalArgumentException- if strategy or thresholds are null
-
setBalking
Sets the global balking configuration using a single threshold. Convenience method for simple balking configurations.- Parameters:
strategy- the balking strategy to useminJobs- minimum queue length to trigger balkingprobability- balking probability when queue length >= minJobs
-
getBalkingStrategy
Gets the global balking strategy for this job class.- Returns:
- the balking strategy, or null if not configured
-
getBalkingThresholds
Gets the global balking thresholds for this job class.- Returns:
- list of balking thresholds, or null if not configured
-
hasBalking
public boolean hasBalking()Checks if this job class has balking configured.- Returns:
- true if balking is configured, false otherwise
-
setRetrial
Sets the global retrial configuration for this job class. When a customer is rejected due to capacity, they will enter an orbit and retry after a delay drawn from the specified distribution.- Parameters:
delayDistribution- the distribution for retrial delay timesmaxAttempts- maximum retry attempts (-1 for unlimited, 0 for no retries)- Throws:
IllegalArgumentException- if delayDistribution is null or a modulated process
-
setRetrial
Sets the global retrial configuration with unlimited retry attempts.- Parameters:
delayDistribution- the distribution for retrial delay times
-
getRetrialDelayDistribution
Gets the global retrial delay distribution for this job class.- Returns:
- the retrial delay distribution, or null if not configured
-
getMaxRetrialAttempts
public int getMaxRetrialAttempts()Gets the maximum number of retrial attempts for this job class.- Returns:
- maximum attempts (-1 for unlimited)
-
hasRetrial
public boolean hasRetrial()Checks if this job class has retrial configured.- Returns:
- true if retrial is configured, false otherwise
-
printSummary
public void printSummary()Prints a summary of this job class configuration to the console. -
setImmediateFeedback
public void setImmediateFeedback(boolean enabled) Enables or disables immediate feedback for this job class globally. When enabled, jobs of this class that self-loop at any station stay in service instead of rejoining the queue.- Parameters:
enabled- true to enable immediate feedback, false to disable
-
hasImmediateFeedback
public boolean hasImmediateFeedback()Checks if immediate feedback is enabled for this job class.- Returns:
- true if immediate feedback is enabled
-