package net.lvsq.jgossip.core;

import io.netty.util.internal.StringUtil;
import io.vertx.core.logging.Logger;
import io.vertx.core.logging.LoggerFactory;
import net.lvsq.jgossip.event.GossipListener;
import net.lvsq.jgossip.model.SeedMember;

import java.util.List;

public class GossipService {
    private static final Logger LOGGER = LoggerFactory.getLogger(GossipService.class);

    public GossipService(String cluster, String ipAddress, Integer port, String id, List<SeedMember> seedMembers, GossipSettings settings, GossipListener listener) throws Exception {
        checkParams(cluster, ipAddress, port, seedMembers);
        if (StringUtil.isNullOrEmpty(id)) {
            id = ipAddress.concat(":").concat(String.valueOf(port));
        }
        GossipManager.getInstance().init(cluster, ipAddress, port, id, seedMembers, settings, listener);
    }

    public GossipManager getGossipManager() {
        return GossipManager.getInstance();
    }

    public void start() {
        if (getGossipManager().isWorking()) {
            LOGGER.info("Cgossip already workinig");
            return;
        }
        GossipManager.getInstance().start();
    }

    public void shutdown() {
        if (getGossipManager().isWorking()) {
            GossipManager.getInstance().shutdown();
        }
    }

    private void checkParams(String cluster, String ipAddress, Integer port, List<SeedMember> seedMembers) throws Exception {
        String f = "[%s] is required!";
        String who = null;
        if (StringUtil.isNullOrEmpty(cluster)) {
            who = "cluster";
        } else if (StringUtil.isNullOrEmpty(ipAddress)) {
            who = "ip";
        } else if (StringUtil.isNullOrEmpty(String.valueOf(port))) {
            who = "port";
        } else if (seedMembers == null || seedMembers.isEmpty()) {
            who = "seed member";
        }
        if (who != null) {
            throw new IllegalArgumentException(String.format(f, who));
        }
    }
}

@@ -1,8 +1,645 @@
+// Copyright (c) 2017 The jgossip Authors. All rights reserved.%0D%0A//%0D%0A// Licensed under the Apache License, Version 2.0 (the %22License%22);%0D%0A// you may not use this file except in compliance with the License.%0D%0A// You may obtain a copy of the License at%0D%0A//%0D%0A//     http://www.apache.org/licenses/LICENSE-2.0%0D%0A//%0D%0A// Unless required by applicable law or agreed to in writing, software%0D%0A// distributed under the License is distributed on an %22AS IS%22 BASIS,%0D%0A// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.%0D%0A// See the License for the specific language governing permissions and%0D%0A// limitations under the License.%0D%0A%0D%0A
 package 
@@ -908,16 +908,43 @@
 ist;%0D%0A%0D%0A
+/**%0D%0A * @author lvsq%0D%0A */%0D%0A
 public c

Update GossipService.java