| /**************************************************************************** |
| * Copyright (c) 2005, 2010 Jan S. Rellermeyer, Systems Group, |
| * Department of Computer Science, ETH Zurich 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: |
| * Jan S. Rellermeyer - initial API and implementation |
| * Markus Alexander Kuppe - enhancements and bug fixes |
| * Md.Jamal MohiUddin (Ubiquitous Computing, C-DAC Hyderabad) - IPv6 support |
| * P Sowjanya (Ubiquitous Computing, C-DAC Hyderabad) - IPv6 support |
| * |
| *****************************************************************************/ |
| package ch.ethz.iks.slp; |
| |
| import java.util.Locale; |
| import ch.ethz.iks.slp.impl.SLPCore; |
| import ch.ethz.iks.slp.impl.StandalonePlatformAbstraction; |
| |
| /** |
| * The central manager for SLP interaction. Application can get a Locator for UA |
| * functionality and a Advertiser for SA functionality. |
| * |
| * @author Jan S. Rellermeyer, ETH Zurich |
| * @since 0.1 |
| */ |
| public final class ServiceLocationManager extends SLPCore { |
| |
| /** |
| * hidden default constructor. |
| */ |
| private ServiceLocationManager() { |
| } |
| |
| public static void init() { |
| if(SLPCore.platform == null) { |
| SLPCore.platform = new StandalonePlatformAbstraction(); |
| SLPCore.init(); |
| } |
| } |
| |
| /** |
| * get the refresh interval, that is the maximum over all DA's minimum |
| * update intervals. |
| * |
| * @return the refresh interval. |
| * @throws ServiceLocationException |
| * in case of an exception in the underlying framework. |
| */ |
| public static int getRefreshInterval() throws ServiceLocationException { |
| return -1; |
| } |
| |
| /** |
| * get a Locator to have access to the UA functionalities. |
| * |
| * @param locale |
| * the <code>Locale</code> for all requests. |
| * @return a <code>Locator</code> instance. |
| * @throws ServiceLocationException |
| * in case of an exception in the underlying framework. |
| */ |
| public static Locator getLocator(final Locale locale) |
| throws ServiceLocationException { |
| init(); |
| if (locator != null) { |
| try { |
| //TODO::We have to Initialize the Multicast Socket for UA also for receiving DA Advt Messages |
| return (Locator) locator.newInstance(new Object[] { locale }); |
| } catch (Exception e) { |
| throw new ServiceLocationException( |
| ServiceLocationException.INTERNAL_SYSTEM_ERROR, e |
| .getMessage()); |
| } |
| } else { |
| throw new ServiceLocationException( |
| ServiceLocationException.NOT_IMPLEMENTED, |
| "The current configuration does not support UA functionalities."); |
| } |
| } |
| |
| /** |
| * get a Advertiser to have access to the SA functionalities. |
| * |
| * @param locale |
| * the <code>Locale</code> for all messages. |
| * @return an <code>Advertiser</code> instance. |
| * @throws ServiceLocationException |
| * in case of an exception in the underlying framework. |
| */ |
| public static Advertiser getAdvertiser(final Locale locale) |
| throws ServiceLocationException { |
| init(); |
| if (advertiser != null) { |
| try { |
| return (Advertiser) advertiser |
| .newInstance(new Object[] { locale }); |
| } catch (Exception e) { |
| throw new ServiceLocationException( |
| ServiceLocationException.INTERNAL_SYSTEM_ERROR, e |
| .getMessage()); |
| } |
| } else { |
| throw new ServiceLocationException( |
| ServiceLocationException.NOT_IMPLEMENTED, |
| "The current configuration does not support SA functionalities."); |
| } |
| } |
| } |