DJ - The delegate-job type.DQ - The queue-type for delegate jobs.J - The job type.Q - The queue type for jobs.public class EncHS<DJ extends SimJob,DQ extends SimQueue,J extends SimJob,Q extends EncHS> extends AbstractEncapsulatorSimQueue<DJ,DQ,J,Q>
SimQueueComposite encapsulating a single SimQueue of which job starts are hidden.
This composite queue (precisely) mimics the SimQueue interface of the encapsulated queue,
including non-standard operations and notifications,
but hides the start of (delegate) job on the encapsulated queue.
Refer to AbstractEncapsulatorSimQueue,
AbstractSimQueueComposite
and SimQueueComposite
for more details on encapsulated queues.
Copyright (C) 2005-2017 Jan de Jongh, TNO
This file is covered by the LICENSE file in the root of this project.
SimQueueComposite,
EncAbstractSimQueueComposite.RealDelegateJobMapper<J extends SimJob,DJ extends SimJob>AbstractSimEntity.Notifier, AbstractSimEntity.PreNotificationHookSimQueue.AutoRevocationPolicySimEntity.Action, SimEntity.UnknownNotificationTypePolicy, SimEntity.UnknownOperationPolicyrealDelegateJobMappereventsScheduled, SANITYUSE_ARRAY_OPTIMIZATION| Constructor and Description |
|---|
EncHS(org.javades.jsimulation.r5.SimEventList eventList,
DQ queue,
DelegateSimJobFactory delegateSimJobFactory)
Creates an encapsulator queue that hides its sub-queue starts given an event list and a queue.
|
| Modifier and Type | Method and Description |
|---|---|
EncHS<DJ,DQ,J,Q> |
getCopySimQueue()
Returns a new
EncHS object on the same SimEventList
with a copy of the encapsulated queue and the same delegate-job factory. |
Object |
getQoS()
Calls super method (in order to make implementation final).
|
Class |
getQoSClass()
Calls super method (in order to make implementation final).
|
protected double |
getServiceTimeForJob(J job)
Calls super method (in order to make implementation final).
|
protected void |
insertJobInQueueUponArrival(J job,
double time)
Calls super method (in order to make implementation final).
|
protected void |
insertJobInQueueUponStart(J job,
double time)
Throws an exception.
|
boolean |
isStartArmed()
Returns
false, since (real) jobs cannot start. |
protected void |
processSubQueueNotifications(List<MultiSimQueueNotificationProcessor.Notification<DJ,DQ>> notifications)
Removes all start notifications from the list and calls super method (and makes the implementation final).
|
protected void |
queueAccessVacationDropSubClass(double time,
J job)
Calls super method (in order to make implementation final).
|
protected void |
removeJobFromQueueUponDeparture(J departingJob,
double time)
Calls super method (in order to make implementation final).
|
protected void |
removeJobFromQueueUponDrop(J job,
double time)
Calls super method (in order to make implementation final).
|
protected void |
removeJobFromQueueUponRevokation(J job,
double time,
boolean auto)
Calls super method (in order to make implementation final).
|
protected void |
rescheduleAfterArrival(J job,
double time)
Calls super method (in order to make implementation final).
|
protected void |
rescheduleAfterDeparture(J departedJob,
double time)
Calls super method (in order to make implementation final).
|
protected void |
rescheduleAfterDrop(J job,
double time)
Calls super method (in order to make implementation final).
|
protected void |
rescheduleAfterRevokation(J job,
double time,
boolean auto)
Calls super method (in order to make implementation final).
|
protected void |
rescheduleAfterStart(J job,
double time)
Throws an exception.
|
protected void |
rescheduleForNewServerAccessCredits(double time)
Calls super method (in order to make implementation final).
|
protected void |
resetEntitySubClass()
Calls super method (in order to make implementation final).
|
protected void |
setServerAccessCreditsSubClass()
Does nothing.
|
String |
toStringDefault()
Returns "EncHS[encapsulated queue]".
|
getEncapsulatedQueueaddRealJobLocal, getCopySimQueues, getCopySubSimQueues, getDelegateJob, getDelegateJobMild, getDelegateSimJobFactory, getIndex, getIndex, getQueue, getQueue, getQueues, getRealJob, getRealJob, getSimQueueSelector, isDelegateJob, isRealJob, notifyResetEntity, notifyStateChanged, notifyUpdate, removeJobsFromQueueLocal, resetSimQueueSelector, selectFirstQueue, selectNextQueue, setDelegateSimJobFactoryarrive, autoRevoke, cancelDepartureEvent, cancelDepartureEvent, depart, departureFromEventList, drop, getAutoRevocationPolicy, getDepartureEvents, getDepartureEvents, getFirstJob, getFirstJobInServiceArea, getFirstJobInWaitingArea, getJobs, getJobsInServiceArea, getJobsInWaitingArea, getNumberOfJobs, getNumberOfJobsInServiceArea, getNumberOfJobsInWaitingArea, getServerAccessCredits, hasJobs, hasJobsInServiceArea, hasJobsInWaitingArea, hasServerAcccessCredits, isJob, isJobInServiceArea, isJobInWaitingArea, isQueueAccessVacation, registerStdOutSimQueueListener, revoke, revoke, scheduleDepartureEvent, scheduleJobArrival, setAutoRevocationPolicy, setQueueAccessVacation, setServerAccessCredits, start, takeServerAccessCredit, triggerPotentialNewStartArmed, unregisterStdOutSimQueueListeneraddPendingNotification, addPendingNotification, clearAndUnlockPendingNotificationsIfLocked, delegateOperation, doAfterNotifications, doOperation, fireAndLockPendingNotifications, getEventList, getLastUpdateTime, getRegisteredDelegatedOperations, getRegisteredNotificationTypes, getRegisteredOperations, getSimEntityListeners, getUnknownNotificationTypePolicy, getUnknownOperationPolicy, isIgnoreEventListReset, notifyEventListReset, registerDelegatedOperation, registerNotificationType, registerOperation, registerPreEventHook, registerPreNotificationHook, registerPreUpdateHook, registerSimEntityListener, registerStdOutSimEntityListener, removeDelegationForOperation, resetEntity, setIgnoreEventListReset, setName, setUnknownNotificationTypePolicy, setUnknownOperationPolicy, toString, unregisterSimEntityListener, unregisterStdOutSimEntityListener, updateclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitarrive, getAutoRevocationPolicy, getJobs, getJobsInServiceArea, getJobsInWaitingArea, getNumberOfJobs, getNumberOfJobsInServiceArea, getNumberOfJobsInWaitingArea, getServerAccessCredits, isJob, isJobInServiceArea, isJobInWaitingArea, isQueueAccessVacation, revoke, revoke, setAutoRevocationPolicy, setQueueAccessVacation, setServerAccessCreditsdoAfterNotifications, doOperation, getEventList, getLastUpdateTime, getRegisteredNotificationTypes, getRegisteredOperations, getSimEntityListeners, getUnknownNotificationTypePolicy, getUnknownOperationPolicy, isIgnoreEventListReset, registerSimEntityListener, resetEntity, setIgnoreEventListReset, setName, setUnknownNotificationTypePolicy, setUnknownOperationPolicy, unregisterSimEntityListener, updatepublic EncHS(org.javades.jsimulation.r5.SimEventList eventList,
DQ queue,
DelegateSimJobFactory delegateSimJobFactory)
eventList - The event list to use.queue - The encapsulated queue.delegateSimJobFactory - An optional factory for the delegate SimJobs.IllegalArgumentException - If the event list or the queue is null.DelegateSimJobFactory,
DefaultDelegateSimJobFactorypublic EncHS<DJ,DQ,J,Q> getCopySimQueue()
EncHS object on the same SimEventList
with a copy of the encapsulated queue and the same delegate-job factory.EncHS object on the same SimEventList
with a copy of the encapsulated queue and the same delegate-job factory.UnsupportedOperationException - If the encapsulated queue could not be copied through SimQueue.getCopySimQueue().AbstractSimEntity.getEventList(),
AbstractEncapsulatorSimQueue.getEncapsulatedQueue(),
AbstractSimQueueComposite.getDelegateSimJobFactory()public String toStringDefault()
toStringDefault in interface SimEntitytoStringDefault in class AbstractSimQueue<J extends SimJob,Q extends EncHS>SimEntity.setName(java.lang.String),
Object.toString()public final Object getQoS()
public final Class getQoSClass()
protected final void resetEntitySubClass()
resetEntitySubClass in class AbstractEncapsulatorSimQueue<DJ extends SimJob,DQ extends SimQueue,J extends SimJob,Q extends EncHS>AbstractSimQueue.removeJobFromQueueUponRevokation(J, double, boolean),
AbstractSimQueue.rescheduleAfterRevokation(J, double, boolean),
SimEntity.resetEntity(),
SimQueueSelector.resetSimQueueSelector(),
SimQueue.setServerAccessCredits(double, int),
SimQueue.isStartArmed()protected final void queueAccessVacationDropSubClass(double time,
J job)
queueAccessVacationDropSubClass in class AbstractSimQueue<J extends SimJob,Q extends EncHS>time - The time the job was dropped, i.e., the current time.job - The dropped job.AbstractSimQueue.arrive(double, J),
AbstractSimQueue.setQueueAccessVacation(double, boolean)protected final void insertJobInQueueUponArrival(J job, double time)
insertJobInQueueUponArrival in class AbstractEncapsulatorSimQueue<DJ extends SimJob,DQ extends SimQueue,J extends SimJob,Q extends EncHS>job - The job that arrived.time - The current time (i.e., arrival time of the job).AbstractSimQueueComposite.addRealJobLocal(J),
AbstractEncapsulatorSimQueue.rescheduleAfterArrival(J, double)protected final void rescheduleAfterArrival(J job, double time)
rescheduleAfterArrival in class AbstractEncapsulatorSimQueue<DJ extends SimJob,DQ extends SimQueue,J extends SimJob,Q extends EncHS>job - The job that arrived (and is already present in AbstractSimQueue.getJobs()).time - The current time (i.e., the arrival time of the job).SimQueue.arrive(double, J),
AbstractEncapsulatorSimQueue.insertJobInQueueUponArrival(J, double)protected final void removeJobFromQueueUponDrop(J job, double time)
removeJobFromQueueUponDrop in class AbstractEncapsulatorSimQueue<DJ extends SimJob,DQ extends SimQueue,J extends SimJob,Q extends EncHS>job - The job that is to be dropped.time - The current time (i.e., drop time of the job).AbstractSimQueue.drop(J, double),
AbstractEncapsulatorSimQueue.rescheduleAfterDrop(J, double),
AbstractEncapsulatorSimQueue.removeJobFromQueueUponRevokation(J, double, boolean),
AbstractSimQueueComposite.removeJobsFromQueueLocal(J, DJ),
AbstractSimQueueComposite.getDelegateJob(SimJob),
SimJob.getQueue()protected final void rescheduleAfterDrop(J job, double time)
rescheduleAfterDrop in class AbstractEncapsulatorSimQueue<DJ extends SimJob,DQ extends SimQueue,J extends SimJob,Q extends EncHS>job - The jobs that was dropped.time - The current time (i.e., drop time of the job).AbstractEncapsulatorSimQueue.removeJobFromQueueUponDrop(J, double),
AbstractEncapsulatorSimQueue.rescheduleAfterRevokation(J, double, boolean)protected final void removeJobFromQueueUponRevokation(J job, double time, boolean auto)
removeJobFromQueueUponRevokation in class AbstractEncapsulatorSimQueue<DJ extends SimJob,DQ extends SimQueue,J extends SimJob,Q extends EncHS>job - The job that is to be revoked.time - The current time (i.e., revocation time of the job).auto - Whether or not this applies to an auto-revocation.AbstractSimQueue.revoke(double, J, boolean),
AbstractSimQueue.autoRevoke(double, J),
SimJQEvent.Revocation,
AbstractEncapsulatorSimQueue.rescheduleAfterRevokation(J, double, boolean),
AbstractSimQueueComposite.getDelegateJob(SimJob),
SimJob.getQueue(),
AbstractSimQueueComposite.removeJobsFromQueueLocal(J, DJ)protected final void rescheduleAfterRevokation(J job, double time, boolean auto)
rescheduleAfterRevokation in class AbstractEncapsulatorSimQueue<DJ extends SimJob,DQ extends SimQueue,J extends SimJob,Q extends EncHS>job - The jobs that was successfully revoked.time - The current time (i.e., revocation time of the job).auto - Whether or not this applies to an auto-revocation.SimJQEvent.Revocation,
AbstractEncapsulatorSimQueue.removeJobFromQueueUponRevokation(J, double, boolean),
AbstractEncapsulatorSimQueue.processSubQueueNotifications(java.util.List<org.javades.jqueues.r5.listener.MultiSimQueueNotificationProcessor.Notification<DJ, DQ>>)public final boolean isStartArmed()
false, since (real) jobs cannot start.
Note: This overrides the default AbstractEncapsulatorSimQueue implementation.
isStartArmed in interface SimQueue<J extends SimJob,Q extends EncHS>isStartArmed in class AbstractEncapsulatorSimQueue<DJ extends SimJob,DQ extends SimQueue,J extends SimJob,Q extends EncHS>false, since (real) jobs cannot start.SimQueue.isStartArmed()protected final void setServerAccessCreditsSubClass()
Note: This overrides the default AbstractEncapsulatorSimQueue implementation.
In the EncHS queue, server-access credits on the encapsulated queue are
left untouched.
The composite queue has its own little private notion of the server-access credits,
but since jobs do not start, these do not hurt.
We have to do this in order to prevent all sorts of server-access-credits-related
notifications to enter the composite queue and its listeners.
They might fail to understand why server-access credits change in the absence of
starting jobs.
setServerAccessCreditsSubClass in class AbstractEncapsulatorSimQueue<DJ extends SimJob,DQ extends SimQueue,J extends SimJob,Q extends EncHS>AbstractSimQueue.getServerAccessCredits(),
AbstractSimEntity.getLastUpdateTime(),
SimQueue.setServerAccessCredits(double, int),
AbstractEncapsulatorSimQueue.rescheduleForNewServerAccessCredits(double)protected final void rescheduleForNewServerAccessCredits(double time)
rescheduleForNewServerAccessCredits in class AbstractEncapsulatorSimQueue<DJ extends SimJob,DQ extends SimQueue,J extends SimJob,Q extends EncHS>time - The current time (i.e., the time at which new server-access credits became available).AbstractEncapsulatorSimQueue.setServerAccessCreditsSubClass()protected final void insertJobInQueueUponStart(J job, double time)
Note: This overrides the default AbstractEncapsulatorSimQueue implementation.
insertJobInQueueUponStart in class AbstractEncapsulatorSimQueue<DJ extends SimJob,DQ extends SimQueue,J extends SimJob,Q extends EncHS>job - The job that starts.time - The current time (i.e., start time of the job).IllegalStateException - Since jobs cannot start.AbstractSimQueue.isJob(org.javades.jqueues.r5.entity.jq.job.SimJob),
AbstractSimQueue.isJobInServiceArea(org.javades.jqueues.r5.entity.jq.job.SimJob),
AbstractSimQueueComposite.getDelegateJob(J),
AbstractEncapsulatorSimQueue.rescheduleAfterStart(J, double)protected final void rescheduleAfterStart(J job, double time)
Note: This overrides the default AbstractEncapsulatorSimQueue implementation.
rescheduleAfterStart in class AbstractEncapsulatorSimQueue<DJ extends SimJob,DQ extends SimQueue,J extends SimJob,Q extends EncHS>job - The job that started (and is already present in AbstractSimQueue.getJobsInServiceArea().time - The current time (i.e., the start time of the job).IllegalStateException - Since jobs cannot start.AbstractSimQueue.isJob(org.javades.jqueues.r5.entity.jq.job.SimJob),
AbstractSimQueue.isJobInServiceArea(org.javades.jqueues.r5.entity.jq.job.SimJob),
AbstractSimQueueComposite.getDelegateJob(J),
AbstractEncapsulatorSimQueue.insertJobInQueueUponStart(J, double)protected final double getServiceTimeForJob(J job)
getServiceTimeForJob in class AbstractEncapsulatorSimQueue<DJ extends SimJob,DQ extends SimQueue,J extends SimJob,Q extends EncHS>job - The job, non-null.protected final void removeJobFromQueueUponDeparture(J departingJob, double time)
removeJobFromQueueUponDeparture in class AbstractEncapsulatorSimQueue<DJ extends SimJob,DQ extends SimQueue,J extends SimJob,Q extends EncHS>departingJob - The job that departs.time - The departure (current) time.AbstractSimQueue.depart(double, J),
AbstractEncapsulatorSimQueue.rescheduleAfterDeparture(J, double),
AbstractEncapsulatorSimQueue.removeJobFromQueueUponRevokation(J, double, boolean),
AbstractSimQueueComposite.removeJobsFromQueueLocal(J, DJ),
AbstractSimQueueComposite.getDelegateJob(SimJob),
SimJob.getQueue()protected final void rescheduleAfterDeparture(J departedJob, double time)
rescheduleAfterDeparture in class AbstractEncapsulatorSimQueue<DJ extends SimJob,DQ extends SimQueue,J extends SimJob,Q extends EncHS>departedJob - The departed job.time - The departure (current) time.AbstractEncapsulatorSimQueue.removeJobFromQueueUponDeparture(J, double),
AbstractEncapsulatorSimQueue.rescheduleAfterRevokation(J, double, boolean)protected final void processSubQueueNotifications(List<MultiSimQueueNotificationProcessor.Notification<DJ,DQ>> notifications)
processSubQueueNotifications in class AbstractEncapsulatorSimQueue<DJ extends SimJob,DQ extends SimQueue,J extends SimJob,Q extends EncHS>notifications - The sub-queue notifications, will be modified; empty upon return.SimJQSimpleEventType.STARTCopyright © 2018. All rights reserved.