blob: d9bae4a5df06a2fd93b3371e63d5f84b491041c5 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009 EclipseSource 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: Scott Lewis and Jeff McAffer - initial API and
* implementation
*******************************************************************************/
package org.eclipse.ecf.server;
import java.util.Dictionary;
import org.eclipse.ecf.remoteservice.IRemoteServiceContainer;
import org.eclipse.ecf.remoteservice.IRemoteServiceRegistration;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;
/**
* Service Host
* @since 2.0
*/
public interface IServiceHost {
/**
* Get the connect target location for this service host. Will not be <code>null</code>.
* @return String that provides an connect target location for IServiceClients to use
* to connect to this service host.
*/
public String getConnectTargetLocation();
/**
* Start the service host. This will make the service host active, and available on the network.
* @throws Exception if something goes wrong with initialization or starting.
*/
public void start() throws Exception;
/**
* Register service host. Registers this service host in the service registry
* with the given BundleContext.
* @param context the BundleContext to register with. Must not be <code>null</code>.
* @param properties to associate with IServiceHost registration. May be <code>null</code>.
* @return ServiceRegistration registration for the IServiceHost service. Will not be <code>null</code>.
*/
public ServiceRegistration registerServiceHost(BundleContext context, Dictionary properties);
/**
* Register a remote service with this service client. This allows remote services to be registered/exposed
* for remote usage.
* @param clazzes the interface class names of the remote services expose.
* @param service the actual service implementation.
* @param remoteServiceProperties and remote service properties to be exposed to clients of the remote service.
* @return IRemoteServiceRegistration the remote service registration for the registered remote service.
* Will not be <code>null</code>.
*/
public IRemoteServiceRegistration registerRemoteService(String[] clazzes, Object service, Dictionary remoteServiceProperties);
/**
* Get the remote service container for this service client.
* @return IRemoteServiceContainer will not be <code>null</code>.
*/
public IRemoteServiceContainer getRemoteServiceContainer();
/**
* Stop this service host. This will stop any/all the underlying containers for this host.
*/
public void stop();
}