/*******************************************************************************
* Copyright (c) 2004 Composent, Inc. and others. All rights reserved. This
* program and the accompanying materials are made available under the terms of
* the Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors: Composent, Inc. - initial API and implementation
******************************************************************************/
package org.eclipse.ecf.discovery;
import java.net.URI;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.ecf.discovery.identity.IServiceID;
/**
* Service information contract. Defines the information associated with a
* remotely discoverable service
*
* see http://www.dns-sd.org/ServiceTypes.html and
* http://www.ietf.org/rfc/rfc2782.txt
*
*/
public interface IServiceInfo extends IAdaptable {
/**
* Get URI for service
*
* @return {@link java.net.URI} the location for the service.
*/
public URI getLocation();
/**
* Get ServiceID for service.
*
* @return ServiceID the serviceID for the service. Will not be
* <code>null</code>.
*/
public IServiceID getServiceID();
/**
* The priority for the service
*
* Priority: The priority of this target host. A client MUST attempt to
* contact the target host with the lowest-numbered priority it can reach;
* target hosts with the same priority SHOULD be tried in an order defined
* by the weight field.
*
* @return int the priority. 0 if no priority information for service.
*/
public int getPriority();
/**
* The weight for the service. 0 if no weight information for service.
*
* Weight: A server selection mechanism. The weight field specifies a
* relative weight for entries with the same priority. Larger weights SHOULD
* be given a proportionately higher probability of being selected. Domain
* administrators SHOULD use Weight 0 when there isn't any server selection
* to do. In the presence of records containing weights greater than 0,
* records with weight 0 should have a very small chance of being selected.
*
* @return int the weight
*/
public int getWeight();
/**
* The time to live for the service. -1 if no TTL given for service.
*
* TTL: A time to live (TTL) defining the live time of a service.
*
* @return long the time to live in seconds
* @since 4.0
*/
public long getTTL();
/**
* Map with any/all properties associated with the service. Properties are
* assumed to be name/value pairs, both of type String.
*
* @return Map the properties associated with this service. Will not be
* <code>null</code>.
*/
public IServiceProperties getServiceProperties();
/**
* A user choose label used for pretty printing this service.
*
* @return A human readable service name. Not used for uniqueness!
* @since 3.0
*/
public String getServiceName();
}