Class AbstractSimDataChannelResource
java.lang.Object
org.palladiosimulator.indirections.scheduler.AbstractSimDataChannelResource
- All Implemented Interfaces:
IDataChannelResource
- Direct Known Subclasses:
AbstractAnyToAllChannel
,AnyToAllPushingDataChannelWithRDs
,D2_WindowedReadingRepartitioning
,D4_MedianWindowing
,D6_Joining
,D6_JoiningToGroup
,SlidingWindowChannel
-
Field Summary
Modifier and TypeFieldDescriptionprotected TriggerableTimeSpanCalculator
protected final org.palladiosimulator.pcm.core.composition.AssemblyContext
protected TriggerableTimeSpanCalculator
protected DataChannel
protected final DataChannelResourceRegistry
protected TriggerableTimeSpanCalculator
protected String
protected final org.palladiosimulator.simulizar.interpreter.InterpreterDefaultContext
protected de.uka.ipd.sdq.simucomframework.model.SimuComModel
protected String
protected TriggerableCountingCalculator
protected TriggerableCountingCalculator
protected TriggerableCountingCalculator
protected TriggerableCountingCalculator
protected Map<DataSourceRole,
Queue<ProcessWaitingToGet>> protected Map<DataSinkRole,
Queue<ProcessWaitingToPut>> protected final de.uka.ipd.sdq.scheduler.resources.active.IResourceTableManager
protected final org.palladiosimulator.simulizar.di.component.interfaces.SimulatedThreadComponent.Factory
-
Constructor Summary
ConstructorDescriptionAbstractSimDataChannelResource
(DataChannel dataChannel, org.palladiosimulator.pcm.core.composition.AssemblyContext assemblyContext, org.palladiosimulator.simulizar.interpreter.InterpreterDefaultContext mainContext, de.uka.ipd.sdq.scheduler.SchedulerModel model, org.palladiosimulator.simulizar.di.component.interfaces.SimulatedThreadComponent.Factory simulatedThreadComponentFactory, DataChannelResourceRegistry dataChannelResourceRegistry) -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract void
acceptData
(DataSinkRole role, IndirectionDate date) void
advance
(double watermarkTime) protected void
blockUntilCanGet
(ProcessWaitingToGet process) protected void
blockUntilCanPut
(ProcessWaitingToPut process) protected abstract boolean
canAcceptData
(DataSinkRole role) protected abstract boolean
canProvideData
(DataSourceRole role) protected void
continueWithoutData
(ProcessWaitingToGet process) protected void
protected boolean
discardDateIfTooOld
(IndirectionDate dateToDiscard) If so, this method returns true and measurements about the discarding are recorded.protected void
discardIncomingDate
(IndirectionDate dateToDiscard) boolean
get
(de.uka.ipd.sdq.scheduler.ISchedulableProcess schedulableProcess, DataSourceRole role, Consumer<IndirectionDate> callback) double
getId()
Unique identifier of the resource.getName()
Name of the resource.protected abstract void
protected abstract void
protected abstract void
handleNewWatermarkedTime
(double oldWatermarkTime, double watermarkTime) protected boolean
isDateTooOld
(IndirectionDate date) Finds out whether ALL data in dateToDiscard is too old for this channel.protected abstract boolean
isPushingRole
(DataSourceRole role) protected void
protected void
protected void
protected abstract void
provideDataAndAdvance
(DataSourceRole role, Consumer<IndirectionDate> continuation) It must hold that#provideDataAndAdvance(DataChannelSourceConnector)
can be called iffcanProvideData(DataChannelSourceConnector)
was true immediately before the call.boolean
put
(de.uka.ipd.sdq.scheduler.ISchedulableProcess schedulableProcess, DataSinkRole role, IndirectionDate date) protected void
scheduleAdvance
(double firstOccurence, double delay, double lagBehindRealTime) protected void
scheduleDemand
(String resourceTypeId, String demandSpecification, IndirectionDate date, Consumer<IndirectionDate> andThen) Schedules the given demand on the given resource type.protected void
-
Field Details
-
afterAcceptingAgeCalculator
-
beforeProvidingAgeCalculator
-
dataChannel
-
discardedAgeCalculator
-
id
-
model
protected de.uka.ipd.sdq.simucomframework.model.SimuComModel model -
name
-
numberOfDiscardedIncomingElementsCalculator
-
numberOfDiscardedOutgoingElementsCalculator
-
numberOfStoredIncomingElementsCalculator
-
numberOfStoredOutgoingElementsCalculator
-
processesWaitingToGet
-
processesWaitingToPut
-
waitingToGetTimeCalculator
-
waitingToPutTimeCalculator
-
resourceTableManager
protected final de.uka.ipd.sdq.scheduler.resources.active.IResourceTableManager resourceTableManager -
assemblyContext
protected final org.palladiosimulator.pcm.core.composition.AssemblyContext assemblyContext -
simulatedThreadComponentFactory
protected final org.palladiosimulator.simulizar.di.component.interfaces.SimulatedThreadComponent.Factory simulatedThreadComponentFactory -
mainContext
protected final org.palladiosimulator.simulizar.interpreter.InterpreterDefaultContext mainContext -
dataChannelResourceRegistry
-
-
Constructor Details
-
AbstractSimDataChannelResource
public AbstractSimDataChannelResource(DataChannel dataChannel, org.palladiosimulator.pcm.core.composition.AssemblyContext assemblyContext, org.palladiosimulator.simulizar.interpreter.InterpreterDefaultContext mainContext, de.uka.ipd.sdq.scheduler.SchedulerModel model, org.palladiosimulator.simulizar.di.component.interfaces.SimulatedThreadComponent.Factory simulatedThreadComponentFactory, DataChannelResourceRegistry dataChannelResourceRegistry)
-
-
Method Details
-
acceptData
-
advance
public void advance(double watermarkTime) - Specified by:
advance
in interfaceIDataChannelResource
-
blockUntilCanGet
-
blockUntilCanPut
-
canAcceptData
-
canProvideData
-
continueWithoutData
-
discardDataAndContinue
-
discardIncomingDate
-
discardDateIfTooOld
If so, this method returns true and measurements about the discarding are recorded. -
isDateTooOld
Finds out whether ALL data in dateToDiscard is too old for this channel. -
scheduleDemand
protected void scheduleDemand(String resourceTypeId, String demandSpecification, IndirectionDate date, Consumer<IndirectionDate> andThen) Schedules the given demand on the given resource type. This postpones the continued execution.The demand is scheduled on the resource this data channel is allocated on.
- Parameters:
resourceType
- the type of resourcedemandSpecification
- a StoEx as String
-
get
public boolean get(de.uka.ipd.sdq.scheduler.ISchedulableProcess schedulableProcess, DataSourceRole role, Consumer<IndirectionDate> callback) - Specified by:
get
in interfaceIDataChannelResource
-
isPushingRole
-
getCurrentWatermarkedTime
public double getCurrentWatermarkedTime() -
getId
Description copied from interface:IDataChannelResource
Unique identifier of the resource.- Specified by:
getId
in interfaceIDataChannelResource
- Returns:
-
getName
Description copied from interface:IDataChannelResource
Name of the resource.- Specified by:
getName
in interfaceIDataChannelResource
- Returns:
-
handleCannotProceedToGet
-
handleCannotProceedToPut
-
handleNewWatermarkedTime
protected abstract void handleNewWatermarkedTime(double oldWatermarkTime, double watermarkTime) -
notifyProcessesCanGetNewData
protected void notifyProcessesCanGetNewData() -
notifyProcessesCanPutNewData
protected void notifyProcessesCanPutNewData() -
processDataAvailableToGet
protected void processDataAvailableToGet() -
provideDataAndAdvance
protected abstract void provideDataAndAdvance(DataSourceRole role, Consumer<IndirectionDate> continuation) It must hold that#provideDataAndAdvance(DataChannelSourceConnector)
can be called iffcanProvideData(DataChannelSourceConnector)
was true immediately before the call.Calling
#provideDataAndAdvance(DataChannelSourceConnector)
in a loop must eventually lead tocanProvideData(DataChannelSourceConnector)
returningfalse
. -
put
public boolean put(de.uka.ipd.sdq.scheduler.ISchedulableProcess schedulableProcess, DataSinkRole role, IndirectionDate date) - Specified by:
put
in interfaceIDataChannelResource
-
scheduleAdvance
protected void scheduleAdvance(double firstOccurence, double delay, double lagBehindRealTime) -
unscheduleAdvance
protected void unscheduleAdvance()
-