feat: add options builder (#304)
This commit is contained in:
committed by
Damien Arrachequesne
parent
79cb27fc97
commit
49068d3cc5
@@ -104,5 +104,21 @@ public class IO {
|
|||||||
* Whether to enable multiplexing. Default is true.
|
* Whether to enable multiplexing. Default is true.
|
||||||
*/
|
*/
|
||||||
public boolean multiplex = true;
|
public boolean multiplex = true;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* Retrieve new builder class that helps creating socket option as builder pattern.
|
||||||
|
* This method returns exactly same result as :
|
||||||
|
* </p>
|
||||||
|
* <code>
|
||||||
|
* SocketOptionBuilder builder = SocketOptionBuilder.builder();
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @return builder class that helps creating socket option as builder pattern.
|
||||||
|
* @see SocketOptionBuilder#builder()
|
||||||
|
*/
|
||||||
|
public static SocketOptionBuilder builder() {
|
||||||
|
return SocketOptionBuilder.builder();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
196
src/main/java/io/socket/client/SocketOptionBuilder.java
Normal file
196
src/main/java/io/socket/client/SocketOptionBuilder.java
Normal file
@@ -0,0 +1,196 @@
|
|||||||
|
package io.socket.client;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convenient builder class that helps creating
|
||||||
|
* {@link io.socket.client.IO.Options Client Option} object as builder pattern.
|
||||||
|
* Finally, you can get option object with call {@link #build()} method.
|
||||||
|
*
|
||||||
|
* @author junbong
|
||||||
|
*/
|
||||||
|
public class SocketOptionBuilder {
|
||||||
|
/**
|
||||||
|
* Construct new builder with default preferences.
|
||||||
|
*
|
||||||
|
* @return new builder object
|
||||||
|
* @see SocketOptionBuilder#builder(IO.Options)
|
||||||
|
*/
|
||||||
|
public static SocketOptionBuilder builder() {
|
||||||
|
return new SocketOptionBuilder();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct this builder from specified option object.
|
||||||
|
* The option that returned from {@link #build()} method
|
||||||
|
* is not equals with given option.
|
||||||
|
* In other words, builder creates new option object
|
||||||
|
* and copy all preferences from given option.
|
||||||
|
*
|
||||||
|
* @param options option object which to copy preferences
|
||||||
|
* @return new builder object
|
||||||
|
*/
|
||||||
|
public static SocketOptionBuilder builder(IO.Options options) {
|
||||||
|
return new SocketOptionBuilder(options);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private final IO.Options options = new IO.Options();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct new builder with default preferences.
|
||||||
|
*/
|
||||||
|
protected SocketOptionBuilder() {
|
||||||
|
this(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct this builder from specified option object.
|
||||||
|
* The option that returned from {@link #build()} method
|
||||||
|
* is not equals with given option.
|
||||||
|
* In other words, builder creates new option object
|
||||||
|
* and copy all preferences from given option.
|
||||||
|
*
|
||||||
|
* @param options option object which to copy preferences. Null-ok.
|
||||||
|
*/
|
||||||
|
protected SocketOptionBuilder(IO.Options options) {
|
||||||
|
if (options != null) {
|
||||||
|
this.setForceNew(options.forceNew)
|
||||||
|
.setMultiplex(options.multiplex)
|
||||||
|
.setReconnection(options.reconnection)
|
||||||
|
.setReconnectionAttempts(options.reconnectionAttempts)
|
||||||
|
.setReconnectionDelay(options.reconnectionDelay)
|
||||||
|
.setReconnectionDelayMax(options.reconnectionDelayMax)
|
||||||
|
.setRandomizationFactor(options.randomizationFactor)
|
||||||
|
.setTimeout(options.timeout)
|
||||||
|
.setTransports(options.transports)
|
||||||
|
.setUpgrade(options.upgrade)
|
||||||
|
.setRememberUpgrade(options.rememberUpgrade)
|
||||||
|
.setHost(options.host)
|
||||||
|
.setHostname(options.hostname)
|
||||||
|
.setPort(options.port)
|
||||||
|
.setPolicyPort(options.policyPort)
|
||||||
|
.setSecure(options.secure)
|
||||||
|
.setPath(options.path)
|
||||||
|
.setQuery(options.query)
|
||||||
|
.setAuth(options.auth)
|
||||||
|
.setExtraHeaders(options.extraHeaders);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public SocketOptionBuilder setForceNew(boolean forceNew) {
|
||||||
|
this.options.forceNew = forceNew;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SocketOptionBuilder setMultiplex(boolean multiplex) {
|
||||||
|
this.options.multiplex = multiplex;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SocketOptionBuilder setReconnection(boolean reconnection) {
|
||||||
|
this.options.reconnection = reconnection;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SocketOptionBuilder setReconnectionAttempts(int reconnectionAttempts) {
|
||||||
|
this.options.reconnectionAttempts = reconnectionAttempts;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SocketOptionBuilder setReconnectionDelay(long reconnectionDelay) {
|
||||||
|
this.options.reconnectionDelay = reconnectionDelay;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SocketOptionBuilder setReconnectionDelayMax(long reconnectionDelayMax) {
|
||||||
|
this.options.reconnectionDelayMax = reconnectionDelayMax;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public SocketOptionBuilder setRandomizationFactor(double randomizationFactor) {
|
||||||
|
this.options.randomizationFactor = randomizationFactor;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SocketOptionBuilder setTimeout(long timeout) {
|
||||||
|
this.options.timeout = timeout;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SocketOptionBuilder setTransports(String[] transports) {
|
||||||
|
this.options.transports = transports;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SocketOptionBuilder setUpgrade(boolean upgrade) {
|
||||||
|
this.options.upgrade = upgrade;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SocketOptionBuilder setRememberUpgrade(boolean rememberUpgrade) {
|
||||||
|
this.options.rememberUpgrade = rememberUpgrade;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SocketOptionBuilder setHost(String host) {
|
||||||
|
this.options.host = host;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SocketOptionBuilder setHostname(String hostname) {
|
||||||
|
this.options.hostname = hostname;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SocketOptionBuilder setPort(int port) {
|
||||||
|
this.options.port = port;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SocketOptionBuilder setPolicyPort(int policyPort) {
|
||||||
|
this.options.policyPort = policyPort;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SocketOptionBuilder setQuery(String query) {
|
||||||
|
this.options.query = query;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SocketOptionBuilder setSecure(boolean secure) {
|
||||||
|
this.options.secure = secure;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SocketOptionBuilder setPath(String path) {
|
||||||
|
this.options.path = path;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SocketOptionBuilder setAuth(Map<String, String> auth) {
|
||||||
|
this.options.auth = auth;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SocketOptionBuilder setExtraHeaders(Map<String, List<String>> extraHeaders) {
|
||||||
|
this.options.extraHeaders = extraHeaders;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Finally retrieve {@link io.socket.client.IO.Options} object
|
||||||
|
* from this builder.
|
||||||
|
*
|
||||||
|
* @return option that built from this builder
|
||||||
|
*/
|
||||||
|
public IO.Options build() {
|
||||||
|
return this.options;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user