| // Copyright 2016 The Bazel Authors. All rights reserved. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| package com.google.devtools.build.lib.remote; |
| |
| import com.hazelcast.client.HazelcastClient; |
| import com.hazelcast.client.config.ClientConfig; |
| import com.hazelcast.client.config.ClientNetworkConfig; |
| import com.hazelcast.core.Hazelcast; |
| import com.hazelcast.core.HazelcastInstance; |
| |
| import java.util.concurrent.ConcurrentMap; |
| |
| /** |
| * A factory class for providing a {@link ConcurrentMap} object implemented by Hazelcast. |
| * Hazelcast will work as a distributed memory cache. |
| */ |
| final class HazelcastCacheFactory { |
| |
| private static final String CACHE_NAME = "hazelcast-build-cache"; |
| |
| static ConcurrentMap<String, byte[]> create(RemoteOptions options) { |
| HazelcastInstance instance; |
| if (options.hazelcastNode != null) { |
| // If --hazelast_node is then create a client instance. |
| ClientConfig config = new ClientConfig(); |
| ClientNetworkConfig net = config.getNetworkConfig(); |
| net.addAddress(options.hazelcastNode.split(",")); |
| instance = HazelcastClient.newHazelcastClient(config); |
| } else { |
| // Otherwise create a default instance. This is going to look at |
| // -Dhazelcast.config=some-hazelcast.xml for configuration. |
| instance = Hazelcast.newHazelcastInstance(); |
| } |
| return instance.getMap(CACHE_NAME); |
| } |
| } |