下面列出了com.google.protobuf.Duration#getNanos ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
protected void validateAction(
String operationName,
Action action,
PreconditionFailure.Builder preconditionFailure,
RequestMetadata requestMetadata)
throws InterruptedException, StatusException {
if (action.hasTimeout() && config.hasMaximumActionTimeout()) {
Duration timeout = action.getTimeout();
Duration maximum = config.getMaximumActionTimeout();
if (timeout.getSeconds() > maximum.getSeconds()
|| (timeout.getSeconds() == maximum.getSeconds()
&& timeout.getNanos() > maximum.getNanos())) {
preconditionFailure
.addViolationsBuilder()
.setType(VIOLATION_TYPE_INVALID)
.setSubject(Durations.toString(timeout) + " > " + Durations.toString(maximum))
.setDescription(TIMEOUT_OUT_OF_BOUNDS);
}
}
super.validateAction(operationName, action, preconditionFailure, requestMetadata);
}
@Override
protected void validateAction(
Action action,
@Nullable Command command,
Map<Digest, Directory> directoriesIndex,
Consumer<Digest> onInputDigest,
PreconditionFailure.Builder preconditionFailure) {
if (action.hasTimeout() && hasMaxActionTimeout()) {
Duration timeout = action.getTimeout();
if (timeout.getSeconds() > maxActionTimeout.getSeconds()
|| (timeout.getSeconds() == maxActionTimeout.getSeconds()
&& timeout.getNanos() > maxActionTimeout.getNanos())) {
preconditionFailure
.addViolationsBuilder()
.setType(VIOLATION_TYPE_INVALID)
.setSubject(Durations.toString(timeout) + " > " + Durations.toString(maxActionTimeout))
.setDescription(TIMEOUT_OUT_OF_BOUNDS);
}
}
super.validateAction(action, command, directoriesIndex, onInputDigest, preconditionFailure);
}
private void waitForNextDeadline() {
try {
Duration waitTime = getWaitTime();
if (waitTime.getSeconds() != 0 || waitTime.getNanos() != 0) {
wait(
waitTime.getSeconds() * 1000 + waitTime.getNanos() / 1000000,
waitTime.getNanos() % 1000000);
}
} catch (InterruptedException e) {
running = false;
}
}
private boolean isQueuedOperationValid(QueuedOperation queuedOperation) {
Action action = queuedOperation.getAction();
if (action.hasTimeout() && workerContext.hasMaximumActionTimeout()) {
Duration timeout = action.getTimeout();
Duration maximum = workerContext.getMaximumActionTimeout();
if (timeout.getSeconds() > maximum.getSeconds()
|| (timeout.getSeconds() == maximum.getSeconds()
&& timeout.getNanos() > maximum.getNanos())) {
return false;
}
}
return !queuedOperation.getCommand().getArgumentsList().isEmpty();
}
private static float millisecondBetween(Timestamp from, Timestamp to) {
// The time unit we want is millisecond.
// 1 second = 1000 milliseconds
// 1 millisecond = 1000,000 nanoseconds
Duration d = Timestamps.between(from, to);
return d.getSeconds() * 1000.0f + d.getNanos() / (1000.0f * 1000.0f);
}
public Poller(Duration period) {
checkState(period.getSeconds() > 0 || period.getNanos() >= 1000);
periodMicros = period.getSeconds() * 1000000 + period.getNanos() / 1000;
periodDeadline = Deadline.after(periodMicros, MICROSECONDS);
}
private synchronized void reset(Duration timeout) {
start = System.nanoTime();
timeoutNanos = timeout.getSeconds() * 1000000000L + timeout.getNanos();
this.notify();
}