|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.curjent.impl.agent.Expirations
final class Expirations
Helper for Controller
to manage message expirations
(Expiration
).
The typical use of agents will not include expirations. Consequently, expirations are designed to avoid nearly all overhead when not used.
This class manages runtime configuration of expirations but defers background
expiration logic to ExpirationsTask
.
Field Summary | |
---|---|
private CallInfo[] |
calls
Agent's call sites used for configuring site-specific default expirations. |
(package private) static long |
NIL
Signals that an expiration timeout has not yet been explicitly set. |
private long |
sequence
Current sequence value for ExpirationsTimer . |
private ExpirationsTask |
task
Manages background processing of timers. |
private long |
timeout
Agent's default expiration timeout. |
private TimeUnit |
unit
Agent default expiration timeout unit. |
Constructor Summary | |
---|---|
Expirations(Controller controller,
ReentrantLock lock)
Saves the controller and its lock for internal use. |
Method Summary | |
---|---|
(package private) void |
finish(Message message)
Notification that a message has finished executing. |
(package private) long |
getExpirationTimeout()
Returns the agent's default expiration timeout value. |
(package private) long |
getExpirationTimeout(CallInfo info)
Returns the expiration timeout for a given call site. |
(package private) long |
getExpirationTimeoutNanos(Message message)
Returns the number of NANOSECONDS until the given call
expires. |
(package private) TimeUnit |
getExpirationTimeoutUnit()
Returns the agent's default expiration timeout unit. |
(package private) TimeUnit |
getExpirationTimeoutUnit(CallInfo info)
Returns the expiration timeout unit for a given call site. |
(package private) void |
init(ProxyInfo info,
CallInfo[] calls)
This class is initialized when the controller is initialized. |
(package private) void |
setExpirationTimeout(CallInfo info,
long value,
TimeUnit unit)
Sets an agent call site's expiration time. |
(package private) void |
setExpirationTimeout(long value,
TimeUnit unit)
Sets the agent's default expiration time. |
(package private) boolean |
setExpirationTimeout(Message message,
long value,
TimeUnit unit)
Sets an agent call's expiration time. |
(package private) void |
start(Message message)
Checks if the message is configured for expiration. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private CallInfo[] calls
private long timeout
private TimeUnit unit
private long sequence
ExpirationsTimer
. Increased by one
for each new timer. Used to break ties if two timers have the same
expiration time.
private final ExpirationsTask task
static final long NIL
Constructor Detail |
---|
Expirations(Controller controller, ReentrantLock lock)
Method Detail |
---|
void init(ProxyInfo info, CallInfo[] calls)
Called while the controller is locked.
Controller.init(Proxy, ProxyInfo, CallInfo[])
void start(Message message)
ExpirationsTask.enqueue(ExpirationsTimer)
void finish(Message message)
long getExpirationTimeout()
Long.MAX_VALUE
if not explicity set via a class-level
Expiration
or setExpirationTimeout(long, TimeUnit)
.
getExpirationTimeoutUnit()
TimeUnit getExpirationTimeoutUnit()
NANOSECONDS
if not explicity set via a class-level
Expiration
or setExpirationTimeout(long, TimeUnit)
.
getExpirationTimeout()
void setExpirationTimeout(long value, TimeUnit unit)
Util.nanos(long, TimeUnit, long)
long getExpirationTimeout(CallInfo info)
Long.MAX_VALUE
if not explicity set via a method-level
Expiration
or at runtime via
setExpirationTimeout(CallInfo, long, TimeUnit)
.
getExpirationTimeoutUnit(CallInfo)
TimeUnit getExpirationTimeoutUnit(CallInfo info)
NANOSECONDS
if not explicity set via a method-level
Expiration
or at runtime via
setExpirationTimeout(CallInfo, long, TimeUnit)
.
getExpirationTimeout(CallInfo)
void setExpirationTimeout(CallInfo info, long value, TimeUnit unit)
Util.nanos(long, TimeUnit, long)
boolean setExpirationTimeout(Message message, long value, TimeUnit unit)
value
is 0
; returns true
if
successful. Returns false
for any other timeout value or
if expiration failed because the call is already EXECUTING
or FINISHED
.
Util.nanos(long, TimeUnit, long)
long getExpirationTimeoutNanos(Message message)
NANOSECONDS
until the given call
expires. Returns Long.MAX_VALUE
if the call is not
configured to expire. Returns 0
if the call has already
reached its expiration time (the call may or may not have finished with a
CALL_EXPIRED
completion).
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |