package org.browsermob.proxy; import com.google.inject.Inject; import com.google.inject.Singleton; import com.google.inject.Provider; import java.util.Hashtable; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicInteger; @Singleton public class ProxyManager { private AtomicInteger portCounter = new AtomicInteger(9090); private Provider<ProxyServer> proxyServerProvider; private Map<Integer, ProxyServer> proxies = new ConcurrentHashMap<Integer, ProxyServer>(); @Inject public ProxyManager(Provider<ProxyServer> proxyServerProvider) { this.proxyServerProvider = proxyServerProvider; } public ProxyServer create(Map<String, String> options, int port) throws Exception { ProxyServer proxy = proxyServerProvider.get(); proxy.setPort(port); proxy.start(); proxy.setOptions(options); proxies.put(port, proxy); return proxy; } public ProxyServer create(Map<String, String> options) throws Exception { int port = portCounter.incrementAndGet(); ProxyServer proxy = proxyServerProvider.get(); proxy.setPort(port); proxy.start(); proxy.setOptions(options); proxies.put(port, proxy); return proxy; } public ProxyServer get(int port) { return proxies.get(port); } public void delete(int port) throws Exception { ProxyServer proxy = proxies.remove(port); proxy.stop(); } }