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

com.github.davidmoten.odata.client.HttpRequestOptions Maven / Gradle / Ivy

The newest version!
package com.github.davidmoten.odata.client;

import java.util.Optional;
import java.util.concurrent.TimeUnit;

public interface HttpRequestOptions {

	/**
	 * If present returns the connect timeout for the request (after the SSL
	 * handshake).
	 * 
	 * @return request connect timeout in ms
	 */
	Optional requestConnectTimeoutMs();

	/**
	 * If present returns the read timeout for the request (after the SSL
	 * handshake).
	 * 
	 * @return request read timeout in ms
	 */
	Optional requestReadTimeoutMs();

	HttpRequestOptions EMPTY = new HttpRequestOptionsImpl(Optional.empty(), Optional.empty());

	static HttpRequestOptions create(Optional connectTimeoutMs, Optional readTimeoutMs) {
		return new HttpRequestOptionsImpl(connectTimeoutMs, readTimeoutMs);
	}

	static Builder connectTimeout(long duration, TimeUnit unit) {
		return new Builder(unit.toMillis(duration));
	}

	static HttpRequestOptions readTimeout(long duration, TimeUnit unit) {
		return create(Optional.empty(), Optional.of(unit.toMillis(duration)));
	}

	final class Builder {

		private final long connectTimeoutMs;

		Builder(long connectTimeoutMs) {
			this.connectTimeoutMs = connectTimeoutMs;
		}

		public HttpRequestOptions readTimeout(long duration, TimeUnit unit) {
			return create(Optional.of(connectTimeoutMs), Optional.of(unit.toMillis(duration)));
		}

	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy