// Compute the deadlines for this request based on any absolute or
// relative timing policies that have been specified. Compute this
// now, because it is the earliest possible time, and therefore any
// relative timeouts will cover the entire invocation.
UtcT requestEndTime = getRequestEndTime();
long requestTimeout = getRelativeRequestTimeout();
if ((requestTimeout != 0) || (requestEndTime != null)) {
requestEndTime = Time.earliest(Time.corbaFuture (requestTimeout),
requestEndTime);
if (Time.hasPassed(requestEndTime))
throw new TIMEOUT("Request End Time exceeded prior to invocation",
0, CompletionStatus.COMPLETED_NO);
}
UtcT replyEndTime = getReplyEndTime();
long roundtripTimeout = getRelativeRoundtripTimeout();
if ((roundtripTimeout != 0) || (replyEndTime != null)) {
replyEndTime = Time.earliest(Time.corbaFuture (roundtripTimeout),
replyEndTime);