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
updateListenerProxyFields 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 voidactivatePatterns(PatternData[] patterns)booleancheckIfCanHandle(Request request)Checks whether this Instance can handle the Request.voiddie()voidendShutdown()intgetInstanceID()MicroservicegetOwner()doublegetRelativeWorkDemand()InstanceStategetState()doublegetUsage()voidhandle(Request request)booleanonRequestArrivalAtTarget(Request request, desmoj.core.simulator.TimeInstant when)Listener for the successful completion of the sending process.booleanonRequestFailed(Request request, desmoj.core.simulator.TimeInstant when, RequestFailedReason reason)Listener for the failure of the sending process.booleanonRequestResultArrivedAtRequester(Request request, desmoj.core.simulator.TimeInstant when)Listener for the successful receiving of the answer of a request.booleanonRequestSend(Request request, desmoj.core.simulator.TimeInstant when)Listener for the send-off of a request.voidstart()Starts this instance, reading it to receive requests.voidstartShutdown()Methods inherited from class de.rss.fachstudie.MiSim.entities.networking.RequestSender
addUpdateListener, addUpdateListeners, sendRequest, sendRequest, sendRequest, sendRequestMethods 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, setQueueingPriorityMethods inherited from class desmoj.core.simulator.Schedulable
assignReporter, cancel, getCorrespondingReportable, isCurrent, isScheduled, rename, reSchedule, reSchedule, reSchedulePreempt, scheduledNext, setCorrespondingReportableMethods 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, traceOnMethods inherited from class desmoj.core.simulator.NamedObject
getName, getQuotedName, toStringMethods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods 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
-
getUsage
public double getUsage() -
getRelativeWorkDemand
public double getRelativeWorkDemand() -
getState
-
handle
-
checkIfCanHandle
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
-
getInstanceID
public final int getInstanceID() -
onRequestFailed
public boolean onRequestFailed(Request request, desmoj.core.simulator.TimeInstant when, RequestFailedReason reason)Description copied from interface:IRequestUpdateListenerListener 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:
onRequestFailedin interfaceIRequestUpdateListener- Parameters:
request- request that triggered this eventwhen- time of this eventreason- reason why the request failed- Returns:
- true if the request was terminally handled (consumed) by this instance
-
onRequestArrivalAtTarget
Description copied from interface:IRequestUpdateListenerListener for the successful completion of the sending process. Provides a reference to the successfully arrived request.- Specified by:
onRequestArrivalAtTargetin interfaceIRequestUpdateListener- Parameters:
request- request that triggered this eventwhen- time of this event- Returns:
- true if the request was terminally handled (consumed) by this instance
-
onRequestSend
Description copied from interface:IRequestUpdateListenerListener for the send-off of a request. Provides the send request.- Specified by:
onRequestSendin interfaceIRequestUpdateListener- Parameters:
request- request that triggered this eventwhen- 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:IRequestUpdateListenerListener for the successful receiving of the answer of a request.- Specified by:
onRequestResultArrivedAtRequesterin interfaceIRequestUpdateListener- Parameters:
request- request that triggered this eventwhen- time of this event- Returns:
- true if the request was terminally handled (consumed) by this instance
-