package netflix.ocelli.client; import java.util.concurrent.ConcurrentMap; import rx.Observable; import rx.functions.Func1; import com.google.common.collect.Maps; public class TestClientConnectorFactory implements Func1<TestClient, Observable<Void>> { private ConcurrentMap<TestClient, TestClientConnector> connectors = Maps.newConcurrentMap(); @Override public Observable<Void> call(TestClient client) { return Observable.create(get(client)); } public TestClientConnector get(TestClient client) { TestClientConnector connector = new TestClientConnector(client); TestClientConnector prev = connectors.putIfAbsent(client, connector); if (prev != null) { connector = prev; } return connector; } }