All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.icij.extract.mysql.SQLCondition Maven / Gradle / Ivy

There is a newer version: 7.4.0
Show newest version
package org.icij.extract.mysql;

import javax.sql.DataSource;
import java.util.Date;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Condition;

public abstract class SQLCondition implements Condition {

	protected final FunctionalDataSource dataSource;

	public SQLCondition(final DataSource dataSource) {
		this.dataSource = FunctionalDataSource.cast(dataSource);
	}

	@Override
	public void await() throws InterruptedException {
		while (await(Long.MAX_VALUE, TimeUnit.NANOSECONDS)) {
			if (Thread.interrupted()) {
				throw new InterruptedException();
			}
		}
	}

	@Override
	public boolean awaitUntil(final Date deadline) throws InterruptedException {
		return await(deadline.getTime() - System.currentTimeMillis(), TimeUnit.MILLISECONDS);
	}

	@Override
	public long awaitNanos(final long nanosTimeout) throws InterruptedException {
		final long now = System.nanoTime();

		await(nanosTimeout, TimeUnit.NANOSECONDS);
		return System.nanoTime() - now;
	}

	@Override
	public void awaitUninterruptibly() {
		while (true) {
			try {
				await();
				break;
			} catch (final InterruptedException ignored) {
			}
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy