/*
 * Copyright (c) 2011-2016 The original author or authors
 *
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * and Apache License v2.0 which accompanies this distribution.
 *
 *      The Eclipse Public License is available at
 *      http://www.eclipse.org/legal/epl-v10.html
 *
 *      The Apache License v2.0 is available at
 *      http://www.opensource.org/licenses/apache2.0.php
 *
 * You may elect to redistribute this code under either of these licenses.
 */

package io.vertx.servicediscovery.consul;

import io.vertx.core.Future;
import io.vertx.core.Promise;
import io.vertx.servicediscovery.Record;
import io.vertx.servicediscovery.spi.ServicePublisher;

import java.util.Objects;

Structure holding a service imported from Consul and published in the Vert.x service discovery.
Author:Clement Escoffier
/** * Structure holding a service imported from Consul and published in the Vert.x service discovery. * * @author <a href="http://escoffier.me">Clement Escoffier</a> */
public class ImportedConsulService { private final String name; private final Record record; private final String id;
Creates a new instance of ImportedConsulService.
Params:
  • name – the service name
  • id – the service id, may be the name
  • record – the record (not yet registered)
/** * Creates a new instance of {@link ImportedConsulService}. * * @param name the service name * @param id the service id, may be the name * @param record the record (not yet registered) */
public ImportedConsulService(String name, String id, Record record) { Objects.requireNonNull(name); Objects.requireNonNull(id); Objects.requireNonNull(record); this.name = name; this.record = record; this.id = id; }
Returns:the name
/** * @return the name */
public String name() { return name; }
Registers the service and completes the given future when done.
Params:
  • publisher – the service publisher instance
  • completion – the completion future
Returns:the current ImportedConsulService
/** * Registers the service and completes the given future when done. * * @param publisher the service publisher instance * @param completion the completion future * @return the current {@link ImportedConsulService} */
public ImportedConsulService register(ServicePublisher publisher, Promise<ImportedConsulService> completion) { publisher.publish(record, ar -> { if (ar.succeeded()) { record.setRegistration(ar.result().getRegistration()); completion.complete(this); } else { completion.fail(ar.cause()); } }); return this; }
Unregisters the service and completes the given future when done, if not null
Params:
  • publiher – the service publisher instance
  • completion – the completion future
/** * Unregisters the service and completes the given future when done, if not {@code null} * * @param publiher the service publisher instance * @param completion the completion future */
public void unregister(ServicePublisher publiher, Promise<Void> completion) { if (record.getRegistration() != null) { publiher.unpublish(record.getRegistration(), ar -> { if (ar.succeeded()) { record.setRegistration(null); } if (completion != null) { completion.complete(); } }); } else { if (completion != null) { completion.fail("Record not published"); } } }
Returns:the id
/** * @return the id */
String id() { return id; } }