tdlib-session-container/src/main/java/it/tdlight/reactiveapi/RSocketParameters.java

73 lines
1.8 KiB
Java

package it.tdlight.reactiveapi;
import com.google.common.net.HostAndPort;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.StringJoiner;
public final class RSocketParameters implements ChannelsParameters {
private final boolean client;
private final TransportFactory transportFactory;
private final List<String> lanes;
public RSocketParameters(boolean client, String host, List<String> lanes) {
this.client = client;
var hostAndPort = HostAndPort.fromString(host);
this.transportFactory = TransportFactory.tcp(hostAndPort);
this.lanes = lanes;
}
public RSocketParameters(boolean client, TransportFactory transportFactory, List<String> lanes) {
this.client = client;
this.transportFactory = transportFactory;
this.lanes = lanes;
}
@Override
public Set<String> getAllLanes() {
var lanes = new LinkedHashSet<String>(this.lanes.size() + 1);
lanes.add("main");
lanes.addAll(this.lanes);
return lanes;
}
public boolean isClient() {
return client;
}
public TransportFactory transportFactory() {
return transportFactory;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
RSocketParameters that = (RSocketParameters) o;
return client == that.client && Objects.equals(transportFactory, that.transportFactory) && Objects.equals(lanes,
that.lanes
);
}
@Override
public int hashCode() {
return Objects.hash(client, transportFactory, lanes);
}
@Override
public String toString() {
return new StringJoiner(", ", RSocketParameters.class.getSimpleName() + "[", "]")
.add("client=" + client)
.add("transportFactory=" + transportFactory)
.add("lanes=" + lanes)
.toString();
}
}