@Override public Future<?> schedule(final Runnable command, final TimeValue timeValue) throws RejectedExecutionException { if (timeValue.toMillis() <= 0) { command.run(); return new Operations.CompletedFuture<Void>(null); } return executor.schedule(command, timeValue); }
SingleCoreListeningIOReactor( final Queue<ExceptionEvent> auditLog, final IOReactorConfig ioReactorConfig, final Callback<SocketChannel> callback) { super(auditLog); this.reactorConfig = ioReactorConfig != null ? ioReactorConfig : IOReactorConfig.DEFAULT; this.callback = callback; this.requestQueue = new ConcurrentLinkedQueue<>(); this.endpoints = new ConcurrentHashMap<>(); this.paused = new AtomicBoolean(false); this.selectTimeoutMillis = this.reactorConfig.getSelectInterval().toMillis(); }
SingleCoreListeningIOReactor( final Queue<ExceptionEvent> auditLog, final IOReactorConfig ioReactorConfig, final Callback<SocketChannel> callback) { super(auditLog); this.reactorConfig = ioReactorConfig != null ? ioReactorConfig : IOReactorConfig.DEFAULT; this.callback = callback; this.requestQueue = new ConcurrentLinkedQueue<>(); this.endpoints = new ConcurrentHashMap<>(); this.paused = new AtomicBoolean(false); this.selectTimeoutMillis = this.reactorConfig.getSelectInterval().toMillis(); }
@Override public void run() { try { while (!Thread.currentThread().isInterrupted()) { Thread.sleep(maxIdleTime.toMillis()); connPool.closeIdle(maxIdleTime); } } catch (final InterruptedException ex) { Thread.currentThread().interrupt(); } catch (final Exception ex) { } } });
public int toMillisIntBound() { return asBoundInt(toMillis()); }
public int toMillisIntBound() { return asBoundInt(toMillis()); }
@Override public final void awaitShutdown(final TimeValue waitTime) throws InterruptedException { Args.notNull(waitTime, "Wait time"); final long deadline = System.currentTimeMillis() + waitTime.toMillis(); long remaining = waitTime.toMillis(); synchronized (this.shutdownMutex) { while (this.status.get().compareTo(IOReactorStatus.SHUT_DOWN) < 0) { this.shutdownMutex.wait(remaining); remaining = deadline - System.currentTimeMillis(); if (remaining <= 0) { return; } } } }
@Override public void run() { try { while (!Thread.currentThread().isInterrupted()) { Thread.sleep(localSleepTime.toMillis()); connectionManager.closeExpired(); if (maxIdleTime != null) { connectionManager.closeIdle(maxIdleTime); } } } catch (final InterruptedException ex) { Thread.currentThread().interrupt(); } catch (final Exception ex) { } } });
@Override public void closeIdle(final TimeValue idleTime) { final long deadline = System.currentTimeMillis() - (TimeValue.isPositive(idleTime) ? idleTime.toMillis() : 0); enumAvailable(new Callback<PoolEntry<T, C>>() { @Override public void execute(final PoolEntry<T, C> entry) { if (entry.getUpdated() <= deadline) { entry.discardConnection(CloseMode.GRACEFUL); } } }); }
@Override public Future<?> schedule(final Runnable command, final TimeValue timeValue) throws RejectedExecutionException { if (timeValue.toMillis() <= 0) { command.run(); return new Operations.CompletedFuture<Void>(null); } return executor.schedule(command, timeValue); }
@Override public void closeIdle(final TimeValue idleTime) { final long deadline = System.currentTimeMillis() - (TimeValue.isPositive(idleTime) ? idleTime.toMillis() : 0); enumAvailable(new Callback<PoolEntry<T, C>>() { @Override public void execute(final PoolEntry<T, C> entry) { if (entry.getUpdated() <= deadline) { entry.discardConnection(CloseMode.GRACEFUL); } } }); }
@Override public void closeIdle(final TimeValue idleTime) { final long deadline = System.currentTimeMillis() - (TimeValue.isPositive(idleTime) ? idleTime.toMillis() : 0); enumAvailable(new Callback<PoolEntry<T, C>>() { @Override public void execute(final PoolEntry<T, C> entry) { if (entry.getUpdated() <= deadline) { entry.discardConnection(CloseMode.GRACEFUL); } } }); }
@Override public void closeIdle(final TimeValue idleTime) { final long deadline = System.currentTimeMillis() - (TimeValue.isPositive(idleTime) ? idleTime.toMillis() : 0); enumAvailable(new Callback<PoolEntry<T, C>>() { @Override public void execute(final PoolEntry<T, C> entry) { if (entry.getUpdated() <= deadline) { entry.discardConnection(CloseMode.GRACEFUL); } } }); }
public synchronized void closeIdle(final TimeValue idleTime) { Args.notNull(idleTime, "Idle time"); if (this.closed.get()) { return; } if (!this.leased) { long time = idleTime.toMillis(); if (time < 0) { time = 0; } final long deadline = System.currentTimeMillis() - time; if (this.updated <= deadline) { closeConnection(CloseMode.GRACEFUL); } } }
public final void closeIdle(final TimeValue idleTime) { final long deadline = System.currentTimeMillis() - (TimeValue.isPositive(idleTime) ? idleTime.toMillis() : 0); for (final PoolEntry poolEntry: sessionPool.values()) { if (poolEntry.session != null) { synchronized (poolEntry) { if (poolEntry.session != null && poolEntry.session.getLastReadTime() <= deadline) { closeSession(poolEntry.session, CloseMode.GRACEFUL); poolEntry.session = null; } } } } }
public final void closeIdle(final TimeValue idleTime) { final long deadline = System.currentTimeMillis() - (TimeValue.isPositive(idleTime) ? idleTime.toMillis() : 0); for (final PoolEntry poolEntry: sessionPool.values()) { if (poolEntry.session != null) { synchronized (poolEntry) { if (poolEntry.session != null && poolEntry.session.getLastReadTime() <= deadline) { closeSession(poolEntry.session, CloseMode.GRACEFUL); poolEntry.session = null; } } } } }
/** * Calculates a deadline with a given time in milliseconds plus a given time value. Non-positive time values * represent an indefinite timeout without a deadline. * * @param timeMillis A time in UNIX milliseconds, usually the current time. * @param timeValue time value to add to {@code timeMillis}. * @return a deadline representing the current time plus the given time value. */ public static Deadline calculate(final long timeMillis, final TimeValue timeValue) { if (TimeValue.isPositive(timeValue)) { // TODO handle unlikely overflow final long deadline = timeMillis + timeValue.toMillis(); return deadline < 0 ? Deadline.MAX_VALUE : Deadline.fromUnixMillis(deadline); } return Deadline.MAX_VALUE; }
private void checkToMillis(final long value, final TimeUnit timeUnit) { Assert.assertEquals(timeUnit.toMillis(value), TimeValue.of(value, timeUnit).toMillis()); }