/** <inheritdoc /> */ public IGridClientData Data(String cacheName) { lock (dataMap) { GridClientDataImpl data; if (!dataMap.TryGetValue(cacheName, out data)) { IGridClientDataConfiguration dataCfg = cfg.DataConfiguration(cacheName); if (dataCfg == null && cacheName != null) { throw new GridClientException("Data configuration for given cache name was not provided: " + cacheName); } IGridClientLoadBalancer balancer = dataCfg != null ? dataCfg.PinnedBalancer : new GridClientRandomBalancer(); Predicate <IGridClientNode> filter = delegate(IGridClientNode e) { return(e.Caches.ContainsKey(cacheName)); }; data = new GridClientDataImpl(cacheName, this, null, filter, balancer); dataMap.Add(cacheName, data); } return(data); } }