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

57 lines
1.4 KiB
Java

package it.tdlight.reactiveapi;
import com.google.common.net.HostAndPort;
import io.rsocket.transport.ClientTransport;
import io.rsocket.transport.ServerTransport;
import io.rsocket.transport.netty.client.TcpClientTransport;
import io.rsocket.transport.netty.server.TcpServerTransport;
import java.util.Objects;
import java.util.StringJoiner;
class TransportFactoryTcp implements TransportFactory {
private final HostAndPort baseHost;
TransportFactoryTcp(HostAndPort baseHost) {
this.baseHost = baseHost;
}
@Override
public ClientTransport getClientTransport(int index) {
return TcpClientTransport.create(baseHost.getHost(), getPort(index));
}
@Override
public ServerTransport<?> getServerTransport(int index) {
return TcpServerTransport.create(baseHost.getHost(), getPort(index));
}
private int getPort(int index) {
return baseHost.getPort() + index;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
TransportFactoryTcp that = (TransportFactoryTcp) o;
return Objects.equals(baseHost, that.baseHost);
}
@Override
public int hashCode() {
return Objects.hash(baseHost);
}
@Override
public String toString() {
return new StringJoiner(", ", TransportFactoryTcp.class.getSimpleName() + "[", "]")
.add("baseHost=" + baseHost)
.toString();
}
}