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

public abstract class AbstractSimDataChannelResource extends Object implements IDataChannelResource
  • Field Details

  • 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

      protected abstract void acceptData(DataSinkRole role, IndirectionDate date)
    • advance

      public void advance(double watermarkTime)
      Specified by:
      advance in interface IDataChannelResource
    • blockUntilCanGet

      protected void blockUntilCanGet(ProcessWaitingToGet process)
    • blockUntilCanPut

      protected void blockUntilCanPut(ProcessWaitingToPut process)
    • canAcceptData

      protected abstract boolean canAcceptData(DataSinkRole role)
    • canProvideData

      protected abstract boolean canProvideData(DataSourceRole role)
    • continueWithoutData

      protected void continueWithoutData(ProcessWaitingToGet process)
    • discardDataAndContinue

      protected void discardDataAndContinue(ProcessWaitingToPut process)
    • discardIncomingDate

      protected void discardIncomingDate(IndirectionDate dateToDiscard)
    • discardDateIfTooOld

      protected boolean discardDateIfTooOld(IndirectionDate dateToDiscard)
      If so, this method returns true and measurements about the discarding are recorded.
    • isDateTooOld

      protected boolean isDateTooOld(IndirectionDate date)
      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 resource
      demandSpecification - a StoEx as String
    • get

      public boolean get(de.uka.ipd.sdq.scheduler.ISchedulableProcess schedulableProcess, DataSourceRole role, Consumer<IndirectionDate> callback)
      Specified by:
      get in interface IDataChannelResource
    • isPushingRole

      protected abstract boolean isPushingRole(DataSourceRole role)
    • getCurrentWatermarkedTime

      public double getCurrentWatermarkedTime()
    • getId

      public String getId()
      Description copied from interface: IDataChannelResource
      Unique identifier of the resource.
      Specified by:
      getId in interface IDataChannelResource
      Returns:
    • getName

      public String getName()
      Description copied from interface: IDataChannelResource
      Name of the resource.
      Specified by:
      getName in interface IDataChannelResource
      Returns:
    • handleCannotProceedToGet

      protected abstract void handleCannotProceedToGet(ProcessWaitingToGet process)
    • handleCannotProceedToPut

      protected abstract void handleCannotProceedToPut(ProcessWaitingToPut process)
    • 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 iff canProvideData(DataChannelSourceConnector) was true immediately before the call.

      Calling #provideDataAndAdvance(DataChannelSourceConnector) in a loop must eventually lead to canProvideData(DataChannelSourceConnector) returning false.

    • put

      public boolean put(de.uka.ipd.sdq.scheduler.ISchedulableProcess schedulableProcess, DataSinkRole role, IndirectionDate date)
      Specified by:
      put in interface IDataChannelResource
    • scheduleAdvance

      protected void scheduleAdvance(double firstOccurence, double delay, double lagBehindRealTime)
    • unscheduleAdvance

      protected void unscheduleAdvance()