blob: 93436fc57ec29375a9fbea1f91a50fe4fcab5f3f [file] [log] [blame]
tomc1a38d32014-08-25 23:01:32 -07001package org.onlab.onos.net.provider;
tom0eb04ca2014-08-25 14:34:51 -07002
3/**
tom96dfcab2014-08-28 09:26:03 -07004 * Registry for tracking information providers with the core.
tom0eb04ca2014-08-25 14:34:51 -07005 *
tom64b7aac2014-08-26 00:18:21 -07006 * @param <P> type of the information provider
tom0eb04ca2014-08-25 14:34:51 -07007 * @param <S> type of the provider service
8 */
tom96dfcab2014-08-28 09:26:03 -07009public interface ProviderRegistry<P extends Provider, S extends ProviderService<P>> {
tom0eb04ca2014-08-25 14:34:51 -070010
11 /**
12 * Registers the supplied provider with the core.
13 *
14 * @param provider provider to be registered
15 * @return provider service for injecting information into core
tomb1260e42014-08-26 18:39:57 -070016 * @throws java.lang.IllegalArgumentException if the provider is registered already
tom0eb04ca2014-08-25 14:34:51 -070017 */
tom64b7aac2014-08-26 00:18:21 -070018 S register(P provider);
tom0eb04ca2014-08-25 14:34:51 -070019
20 /**
21 * Unregisters the supplied provider. As a result the previously issued
tom64b7aac2014-08-26 00:18:21 -070022 * provider service will be invalidated and any subsequent invocations
23 * of its methods may throw {@link java.lang.IllegalStateException}.
tomb1260e42014-08-26 18:39:57 -070024 * <p/>
25 * Unregistering a provider that has not been previously registered results
26 * in a no-op.
tom0eb04ca2014-08-25 14:34:51 -070027 *
28 * @param provider provider to be unregistered
29 */
tom64b7aac2014-08-26 00:18:21 -070030 void unregister(P provider);
tom0eb04ca2014-08-25 14:34:51 -070031
32}