RpcSpiderTools.java
package eu.javaexperience.spider;
import java.io.IOException;
import eu.javaexperience.datareprez.jsonImpl.DataObjectJsonImpl;
import eu.javaexperience.proxy.ProxyStorage;
import eu.javaexperience.proxy.TorProxySpawner.AbstractProxySource;
import eu.javaexperience.proxy.TorProxySpawner.ProxySource;
import eu.javaexperience.rpc.bidirectional.BidirectionalRpcDefaultProtocol;
import eu.javaexperience.rpc.javaclient.JavaRpcClientTools;
public class RpcSpiderTools
{
public static interface ProxySpawnerApi
{
public int get_proxy_offset(int a);
}
public static ProxyStorage connectToProxySpawnerApi(String ip, int port, int maxCapacity) throws IOException
{
ProxySpawnerApi api = (ProxySpawnerApi) JavaRpcClientTools.createApiWithIpPort
(
ProxySpawnerApi.class,
ip,
port,
"TorProxyServer",
new BidirectionalRpcDefaultProtocol<>(new DataObjectJsonImpl())
);
return new ProxyStorage()
{
@Override
public ProxySource getAtOffset(int i) throws IOException
{
synchronized (api)
{
return AbstractProxySource.createLocalSocksProxy(api.get_proxy_offset(i));
}
}
@Override
public int size()
{
return maxCapacity;
}
};
}
}