public interface AcquireAction extends AbstractInternalControlFlowAction
In an RDSEFF, component developers can specify an AcquireAction , which references a passive resource types. Once& nbsp;analysis tools execute this action, they decrease the  ;amount of items available from the referenced passive resource type by one, if at least one item is available. If  ;none item is available, because other, concurrently  ;executed  ;requests have acquired all of them, analysis tools enqueue the current request (first-come-first-serve scheduling  ;policy) and block it's further execution.
Acquisition and release of passive resources happen instantaneously and do not consume any time except for  ;waiting delays before actual acquisition. Resource locking may introduce deadlocks when simulating the model, however, for performance analysis with the PCM it is assumed that no deadlocks occur. Otherwise, the model first needs  ;to be fixed& nbsp;accordingly before carrying out the performance prediction.
A reliability-related extension is the timeout mechanism that may be associated to an AcquireAction through the "timeout" and "timeoutValue" attributes. See the documentation of the "timeout" attribute for further information.
The following features are supported:
SeffPackage.getAcquireAction()| Modifier and Type | Method and Description |
|---|---|
PassiveResource |
getPassiveresource_AcquireAction()
Returns the value of the 'Passiveresource Acquire Action' reference.
|
double |
getTimeoutValue()
Returns the value of the 'Timeout Value' attribute.
|
boolean |
isTimeout()
Returns the value of the 'Timeout' attribute.
|
void |
setPassiveresource_AcquireAction(PassiveResource value)
Sets the value of the '
Passiveresource Acquire Action' reference. |
void |
setTimeout(boolean value)
Sets the value of the '
Timeout' attribute. |
void |
setTimeoutValue(double value)
Sets the value of the '
Timeout Value' attribute. |
boolean |
TimeoutValueOfAcquireActionMustNotBeNegative(DiagnosticChain diagnostics,
Map<Object,Object> context) |
getInfrastructureCall__Action, getResourceCall__Action, getResourceDemand_ActiongetPredecessor_AbstractAction, getResourceDemandingBehaviour_AbstractAction, getSuccessor_AbstractAction, setPredecessor_AbstractAction, setResourceDemandingBehaviour_AbstractAction, setSuccessor_AbstractActiongetEntityName, setEntityNamecdoConflict, cdoDirectResource, cdoHistory, cdoID, cdoInvalid, cdoLockState, cdoPermission, cdoPrefetch, cdoReadLock, cdoReload, cdoResource, cdoRevision, cdoRevision, cdoState, cdoView, cdoWriteLock, cdoWriteOptioneAllContents, eClass, eContainer, eContainingFeature, eContainmentFeature, eContents, eCrossReferences, eGet, eGet, eInvoke, eIsProxy, eIsSet, eResource, eSet, eUnseteAdapters, eDeliver, eNotify, eSetDeliverstatic final String copyright
PassiveResource getPassiveresource_AcquireAction()
If the meaning of the 'Passiveresource Acquire Action' reference isn't clear, there really should be more of a description here...
setPassiveresource_AcquireAction(PassiveResource),
SeffPackage.getAcquireAction_Passiveresource_AcquireAction()void setPassiveresource_AcquireAction(PassiveResource value)
Passiveresource Acquire Action' reference. value - the new value of the 'Passiveresource Acquire Action' reference.getPassiveresource_AcquireAction()boolean isTimeout()
Indicates if the AcquireAction has a timeout. If yes, a simulation through SimuCom with the "simulate failures" option switched on will consider the timeout as follows: Any acquiring thread waits no longer than the duration specified in "timeoutValue". If the maximum waiting time is reached,& nbsp;the thread is removed from the waiting queue and cancelled by a timeout failure.
The reliability Markov analysis does not consider AcquireAction timeouts.
As any failure-on-demand occurrence, timeout failures can be handled by "RecoveryBlockActions" at any higher level in the caller hierarchy. To achieve this, the modeller must specify a "ResourceTimeoutFailureType" pointing to the "PassiveResource" that the AcquireAction is related to. The specified "ResourceTimeoutFailureType" can then be added to the list of handled failure types of any "RecoveryBlockAlternativeBehaviour".
Please notice the following limitation of the current implementation of timeout handling: Timeouts are only considered by SimuCom if the executing software component is allocated to a resource container with an operating system set to "ABSTRACT" (i.e. no specific OS schedulers are supported). The timeout handling implementation can be found in de.uka.ipd.sdq.simucomframework.resources.SimSimpleFairPassiveResource.
setTimeout(boolean),
SeffPackage.getAcquireAction_Timeout()void setTimeout(boolean value)
Timeout' attribute. value - the new value of the 'Timeout' attribute.isTimeout()double getTimeoutValue()
Specifies a timeout value, in case the AcquireAction has a timeout (see the documentation of the "timeout" attribute for further information).
setTimeoutValue(double),
SeffPackage.getAcquireAction_TimeoutValue()void setTimeoutValue(double value)
Timeout Value' attribute. value - the new value of the 'Timeout Value' attribute.getTimeoutValue()boolean TimeoutValueOfAcquireActionMustNotBeNegative(DiagnosticChain diagnostics, Map<Object,Object> context)
diagnostics - The chain of diagnostics to which problems are to be appended.context - The cache of context-specific information.