All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.hazelcast.spi.discovery.SimpleDiscoveryNode Maven / Gradle / Ivy

There is a newer version: 5.5.0
Show newest version
/*
 * Copyright (c) 2008-2016, Hazelcast, Inc. 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.hazelcast.spi.discovery;

import com.hazelcast.nio.Address;
import com.hazelcast.spi.annotation.Beta;

import java.util.Collections;
import java.util.Map;

import static com.hazelcast.util.Preconditions.checkNotNull;
import static java.util.Collections.unmodifiableMap;

/**
 * Simple immutable implementation of the {@link DiscoveryNode} interface for convenience
 * when implementing a {@link DiscoveryStrategy}.
 *
 * @since 3.6
 */
@Beta
public final class SimpleDiscoveryNode
        extends DiscoveryNode {

    private final Address privateAddress;
    private final Address publicAddress;
    private final Map properties;

    /**
     * This constructor will set private and public addresses to the same value and no properties
     * are available.
     *
     * @param privateAddress the discovered node's private address
     */
    public SimpleDiscoveryNode(Address privateAddress) {
        this(privateAddress, privateAddress, Collections.emptyMap());
    }

    /**
     * This constructor will set private and public addresses to the same value.
     *
     * @param privateAddress the discovered node's private address
     * @param properties     the discovered node's additional properties
     */
    public SimpleDiscoveryNode(Address privateAddress, Map properties) {
        this(privateAddress, privateAddress, properties);
    }

    /**
     * 

This constructor will set private and public addresses separately and no properties are available. * Based on the internal implementation Hazelcast will either choose private or public address to connect * to the cluster.

*

On members private addresses are preferred.

* * @param privateAddress the discovered node's private address * @param publicAddress the discovered node's public address */ public SimpleDiscoveryNode(Address privateAddress, Address publicAddress) { this(privateAddress, publicAddress, Collections.emptyMap()); } /** *

This constructor will set private and public addresses separately. Based on the internal * implementation Hazelcast will either choose private or public address to connect to the cluster.

*

On members private addresses are preferred.

* * @param privateAddress the discovered node's private address * @param publicAddress the discovered node's public address * @param properties the discovered node's additional properties */ public SimpleDiscoveryNode(Address privateAddress, Address publicAddress, Map properties) { checkNotNull(privateAddress, "The private address cannot be null"); checkNotNull(properties, "The properties cannot be null"); this.privateAddress = privateAddress; this.publicAddress = publicAddress; this.properties = unmodifiableMap(properties); } @Override public Address getPrivateAddress() { return privateAddress; } @Override public Address getPublicAddress() { return publicAddress; } @Override public Map getProperties() { return properties; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy