private static boolean isExactMinutes(Duration duration) { return duration.toMillis() % (1000 * 60) == 0 && duration.getNano() == 0; }
private static boolean isExactSeconds(Duration duration) { return duration.toMillis() % (1000) == 0 && duration.getNano() == 0; }
@Override public void writeObject(ObjectOutput output, Duration duration) throws IOException { output.writeLong(duration.getSeconds()); output.writeInt(duration.getNano()); }
public static DurationValue duration( Duration value ) { requireNonNull( value, "Duration" ); return newDuration( 0, 0, value.getSeconds(), value.getNano() ); }
private long getLockWaitTimeoutInSeconds(int timeoutInMilliseconds) { Duration duration = Duration.ofMillis( timeoutInMilliseconds ); long timeoutInSeconds = duration.getSeconds(); if ( duration.getNano() != 0 ) { LOG.info( "Changing the query timeout from " + timeoutInMilliseconds + " ms to " + timeoutInSeconds + " s, because HANA requires the timeout in seconds" ); } return timeoutInSeconds; }
@Override public void write(WriteBuffer buffer, Duration attribute) { secondsSerializer.write(buffer,attribute.getSeconds()); nanosSerializer.write(buffer,attribute.getNano()); } }
private boolean isZeroOrGreater1Second(Duration timeout) { return timeout.isZero() || timeout.getNano() % TimeUnit.NANOSECONDS.convert(1, TimeUnit.SECONDS) == 0; }
@Override public void write(WriteBuffer buffer, Duration attribute) { secondsSerializer.write(buffer,attribute.getSeconds()); nanosSerializer.write(buffer,attribute.getNano()); } }
private String getQueryString() { List<String> queryPairs = new ArrayList<>(); if (database != 0) { queryPairs.add(PARAMETER_NAME_DATABASE + "=" + database); } if (clientName != null) { queryPairs.add(PARAMETER_NAME_CLIENT_NAME + "=" + urlEncode(clientName)); } if (sentinelMasterId != null) { queryPairs.add(PARAMETER_NAME_SENTINEL_MASTER_ID + "=" + urlEncode(sentinelMasterId)); } if (timeout.getSeconds() != DEFAULT_TIMEOUT) { if (timeout.getNano() == 0) { queryPairs.add(PARAMETER_NAME_TIMEOUT + "=" + timeout.getSeconds() + toQueryParamUnit(TimeUnit.SECONDS)); } else { queryPairs.add(PARAMETER_NAME_TIMEOUT + "=" + timeout.toMillis() + toQueryParamUnit(TimeUnit.MILLISECONDS)); } } return queryPairs.stream().collect(Collectors.joining("&")); }
@Override public void serialize(Duration duration, JsonGenerator generator, SerializerProvider provider) throws IOException { if (useTimestamp(provider)) { if (useNanoseconds(provider)) { generator.writeNumber(DecimalUtils.toBigDecimal( duration.getSeconds(), duration.getNano() )); } else { generator.writeNumber(duration.toMillis()); } } else { // Does not look like we can make any use of DateTimeFormatter here? generator.writeString(duration.toString()); } }
@Override public void serialize(Duration duration, JsonGenerator generator, SerializerProvider provider) throws IOException { if (useTimestamp(provider)) { if (useNanoseconds(provider)) { generator.writeNumber(DecimalUtils.toBigDecimal( duration.getSeconds(), duration.getNano() )); } else { generator.writeNumber(duration.toMillis()); } } else { // Does not look like we can make any use of DateTimeFormatter here? generator.writeString(duration.toString()); } }
@Override public Mono<Boolean> expire(K key, Duration timeout) { Assert.notNull(key, "Key must not be null!"); Assert.notNull(timeout, "Timeout must not be null!"); if (timeout.getNano() == 0) { return createMono(connection -> connection.keyCommands() // .expire(rawKey(key), timeout)); } return createMono(connection -> connection.keyCommands().pExpire(rawKey(key), timeout)); }
@Override public Argument build(Duration duration, ConfigRegistry config) { Duration d = duration; final boolean isNegative = d.isNegative(); if (isNegative) { d = d.negated(); } final long days = d.toDays(); if (days > Integer.MAX_VALUE) { throw new IllegalArgumentException( String.format("duration %s too large to be represented unambiguously as postgres interval", d)); } d = d.minusDays(days); final int hours = (int) d.toHours(); d = d.minusHours(hours); final int minutes = (int) d.toMinutes(); d = d.minusMinutes(minutes); if (d.getNano() % 1000 != 0) { throw new IllegalArgumentException( String.format("duration %s too precise to represented as postgres interval", d)); } double seconds = d.getSeconds() + d.getNano() / 1e9; final PGInterval interval = new PGInterval(0, 0, (int) days, hours, minutes, seconds); if (isNegative) { interval.scale(-1); } return ObjectArgument.of(interval, Types.OTHER); } }
timeout.getNano(), methodTime.toString(), partition, idNamespace));
@Override protected ByteBuf writeValue(final Duration value, final ByteBufAllocator allocator, final GraphBinaryWriter context) throws SerializationException { return allocator.buffer(12).writeLong(value.getSeconds()).writeInt(value.getNano()); } }
public static BigDecimal toDecimal(Duration instant) { return new BigDecimal(toDecimal(instant.getSeconds(), instant.getNano())); }
/** * Gives a random {@code Duration} value, uniformly distributed across the * interval {@code [min, max]}. * * @param min lower bound of the desired interval * @param max upper bound of the desired interval * @return a random value */ public Duration nextDuration(Duration min, Duration max) { int comparison = checkRange(Ranges.Type.STRING, min, max); if (comparison == 0) return min; long[] next = nextSecondsAndNanos( min.getSeconds(), min.getNano(), max.getSeconds(), max.getNano()); return Duration.ofSeconds(next[0], next[1]); }
@Override public BigInteger toNonNullValue(Duration value) { return BigInteger.valueOf(value.getNano()).add(BigInteger.valueOf(value.getSeconds()).multiply(NANOS_IN_SECOND)); } }
@Override public Long toNonNullValue(Duration value) { BigInteger millisValue = BigInteger.valueOf(value.getNano()).divide(NANOS_IN_MILLI).add(BigInteger.valueOf(value.getSeconds()).multiply(MILLIS_IN_SECOND)); return Long.valueOf(millisValue.longValueExact()); } }
public void write (Kryo kryo, Output out, Duration duration) { out.writeLong(duration.getSeconds()); out.writeInt(duration.getNano(), true); }