package org.infinispan.server.test.client.hotrod; import java.net.InetSocketAddress; import java.net.SocketAddress; import java.util.Set; import org.infinispan.client.hotrod.impl.transport.Transport; import org.infinispan.client.hotrod.impl.transport.tcp.TcpTransport; import org.infinispan.client.hotrod.impl.transport.tcp.TcpTransportFactory; import org.infinispan.client.hotrod.logging.Log; import org.infinispan.client.hotrod.logging.LogFactory; public class HotRodTestInterceptingTransportFactory extends TcpTransportFactory { private static final Log log = LogFactory.getLog(HotRodTestInterceptingTransportFactory.class); private InetSocketAddress sock_addr = null; /* * Returns the last server address used by this transport */ public InetSocketAddress getLastServerAddress() { return sock_addr; } /* * Version of getTransport() which keeps track of InetSocketAddress values */ @Override public Transport getTransport(Set<SocketAddress> failedServers, byte[] cacheName) { Transport transport = super.getTransport(failedServers, cacheName); log.trace("InterceptingTransport called"); sock_addr = (InetSocketAddress) ((TcpTransport) transport).getServerAddress(); return transport; } }