Class MicroserviceInstance

java.lang.Object
desmoj.core.simulator.NamedObject
desmoj.core.simulator.ModelComponent
desmoj.core.simulator.Schedulable
desmoj.core.simulator.Entity
de.rss.fachstudie.MiSim.entities.networking.RequestSender
de.rss.fachstudie.MiSim.entities.microservice.MicroserviceInstance
All Implemented Interfaces:
IRequestUpdateListener, Comparable<IRequestUpdateListener>

public class MicroserviceInstance
extends RequestSender
implements IRequestUpdateListener
A MicroserviceInstance (in the following just called instance) represents an actual, running instance of a Microservice.

An instance has responsibility to handle incoming requests. This is done by either:
1. Sending an answer back to the requester, if the request is completed
2. Creating child requests for satisfying the dependencies of a request
3. Submitting the request to its CPUImpl for handling of its computational demand

During its lifetime an instances is aware of all requests it currently handels and of all dependencies it is currently waiting for.

An instance can have different states, which are defined and described by the enum InstanceState.

Author:
Lion Wagner
See Also:
Microservice, InstanceState
  • Field Summary

    Fields inherited from class de.rss.fachstudie.MiSim.entities.networking.RequestSender

    updateListenerProxy

    Fields inherited from class desmoj.core.simulator.Schedulable

    _schedule
  • Constructor Summary

    Constructors
    Constructor Description
    MicroserviceInstance​(desmoj.core.simulator.Model model, String name, boolean showInTrace, Microservice microservice, int instanceID)  
  • Method Summary

    Modifier and Type Method Description
    void activatePatterns​(PatternData[] patterns)  
    boolean checkIfCanHandle​(Request request)
    Checks whether this Instance can handle the Request.
    void die()  
    void endShutdown()  
    int getInstanceID()  
    Microservice getOwner()  
    double getRelativeWorkDemand()  
    InstanceState getState()  
    double getUsage()  
    void handle​(Request request)  
    boolean onRequestArrivalAtTarget​(Request request, desmoj.core.simulator.TimeInstant when)
    Listener for the successful completion of the sending process.
    boolean onRequestFailed​(Request request, desmoj.core.simulator.TimeInstant when, RequestFailedReason reason)
    Listener for the failure of the sending process.
    boolean onRequestResultArrivedAtRequester​(Request request, desmoj.core.simulator.TimeInstant when)
    Listener for the successful receiving of the answer of a request.
    boolean onRequestSend​(Request request, desmoj.core.simulator.TimeInstant when)
    Listener for the send-off of a request.
    void start()
    Starts this instance, reading it to receive requests.
    void startShutdown()  

    Methods inherited from class de.rss.fachstudie.MiSim.entities.networking.RequestSender

    addUpdateListener, addUpdateListeners, sendRequest, sendRequest, sendRequest, sendRequest

    Methods inherited from class desmoj.core.simulator.Entity

    clone, generateTraceForScheduling, getIdentNumber, getQueueingPriority, getQueues, getScheduledEvents, isEqual, isLarger, isLargerOrEqual, isNotEqual, isQueued, isSimProcess, isSmaller, isSmallerOrEqual, schedule, schedule, schedule, schedule, schedule, schedule, schedule, schedule, schedule, scheduleAfter, scheduleAfter, scheduleAfter, scheduleBefore, scheduleBefore, scheduleBefore, schedulePreempt, schedulePreempt, schedulePreempt, setQueueingPriority

    Methods inherited from class desmoj.core.simulator.Schedulable

    assignReporter, cancel, getCorrespondingReportable, isCurrent, isScheduled, rename, reSchedule, reSchedule, reSchedulePreempt, scheduledNext, setCorrespondingReportable

    Methods inherited from class desmoj.core.simulator.ModelComponent

    current, currentEntity, currentEntityAll, currentEvent, currentlySendDebugNotes, currentlySendTraceNotes, currentModel, currentSimProcess, debugIsOn, debugOff, debugOn, getModel, isExperimentCompatible, isModelCompatible, presentTime, sendDebugNote, sendMessage, sendTraceNote, sendWarning, skipTraceNote, skipTraceNote, traceIsOn, traceOff, traceOn

    Methods inherited from class desmoj.core.simulator.NamedObject

    getName, getQuotedName, toString

    Methods inherited from class java.lang.Object

    equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

    Methods inherited from interface de.rss.fachstudie.MiSim.entities.networking.IRequestUpdateListener

    compareTo, getListeningPriority
  • Constructor Details

    • MicroserviceInstance

      public MicroserviceInstance​(desmoj.core.simulator.Model model, String name, boolean showInTrace, Microservice microservice, int instanceID)
  • Method Details

    • activatePatterns

      public void activatePatterns​(PatternData[] patterns)
    • getUsage

      public double getUsage()
    • getRelativeWorkDemand

      public double getRelativeWorkDemand()
    • getState

      public InstanceState getState()
    • handle

      public void handle​(Request request)
    • checkIfCanHandle

      public boolean checkIfCanHandle​(Request request)
      Checks whether this Instance can handle the Request.
      Parameters:
      request - request that may should be handled by this instance.
      Returns:
      true if this request will be handled, false otherwise
    • start

      public void start()
      Starts this instance, reading it to receive requests.

      Currently the startup process completes immediately.

    • startShutdown

      public final void startShutdown()
    • endShutdown

      public final void endShutdown()
    • die

      public final void die()
    • getOwner

      public final Microservice getOwner()
    • getInstanceID

      public final int getInstanceID()
    • onRequestFailed

      public boolean onRequestFailed​(Request request, desmoj.core.simulator.TimeInstant when, RequestFailedReason reason)
      Description copied from interface: IRequestUpdateListener
      Listener for the failure of the sending process. This could for example be due to the receiving service not being available, the request being canceled or timed out. Provides a reference to the failed request.
      Specified by:
      onRequestFailed in interface IRequestUpdateListener
      Parameters:
      request - request that triggered this event
      when - time of this event
      reason - reason why the request failed
      Returns:
      true if the request was terminally handled (consumed) by this instance
    • onRequestArrivalAtTarget

      public boolean onRequestArrivalAtTarget​(Request request, desmoj.core.simulator.TimeInstant when)
      Description copied from interface: IRequestUpdateListener
      Listener for the successful completion of the sending process. Provides a reference to the successfully arrived request.
      Specified by:
      onRequestArrivalAtTarget in interface IRequestUpdateListener
      Parameters:
      request - request that triggered this event
      when - time of this event
      Returns:
      true if the request was terminally handled (consumed) by this instance
    • onRequestSend

      public boolean onRequestSend​(Request request, desmoj.core.simulator.TimeInstant when)
      Description copied from interface: IRequestUpdateListener
      Listener for the send-off of a request. Provides the send request.
      Specified by:
      onRequestSend in interface IRequestUpdateListener
      Parameters:
      request - request that triggered this event
      when - time of this event
      Returns:
      true if the request was terminally handled (consumed) by this instance
    • onRequestResultArrivedAtRequester

      public boolean onRequestResultArrivedAtRequester​(Request request, desmoj.core.simulator.TimeInstant when)
      Description copied from interface: IRequestUpdateListener
      Listener for the successful receiving of the answer of a request.
      Specified by:
      onRequestResultArrivedAtRequester in interface IRequestUpdateListener
      Parameters:
      request - request that triggered this event
      when - time of this event
      Returns:
      true if the request was terminally handled (consumed) by this instance