X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-dom-api%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fcore%2Fapi%2FBroker.java;h=500dce3cfab2badfff3b1db381448a3ca460f61b;hb=refs%2Fchanges%2F30%2F16630%2F12;hp=b2c35507837dab1dde9ed73e5f9b635161613d98;hpb=6b64494fd8e4654a298312afb4b8e6e827b75d5d;p=controller.git diff --git a/opendaylight/md-sal/sal-dom-api/src/main/java/org/opendaylight/controller/sal/core/api/Broker.java b/opendaylight/md-sal/sal-dom-api/src/main/java/org/opendaylight/controller/sal/core/api/Broker.java index b2c3550783..500dce3cfa 100644 --- a/opendaylight/md-sal/sal-dom-api/src/main/java/org/opendaylight/controller/sal/core/api/Broker.java +++ b/opendaylight/md-sal/sal-dom-api/src/main/java/org/opendaylight/controller/sal/core/api/Broker.java @@ -7,154 +7,123 @@ */ package org.opendaylight.controller.sal.core.api; -import java.util.concurrent.Future; - -import org.opendaylight.controller.sal.core.api.data.DataBrokerService; -import org.opendaylight.controller.sal.core.api.data.DataProviderService; -import org.opendaylight.controller.sal.core.api.notify.NotificationProviderService; -import org.opendaylight.controller.sal.core.api.notify.NotificationService; -import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.common.RpcResult; -import org.opendaylight.yangtools.yang.data.api.CompositeNode; import org.osgi.framework.BundleContext; - /** * Core component of the SAL layer responsible for wiring the SAL consumers. - * + * * The responsibility of the broker is to maintain registration of SAL * functionality {@link Consumer}s and {@link Provider}s, store provider and * consumer specific context and functionality registration via * {@link ConsumerSession} and provide access to infrastructure services, which * removes direct dependencies between providers and consumers. - * - * - *
* During the registration, the broker obtains the initial functionality * from consumer, using the {@link Consumer#getConsumerFunctionality()}, and * register that functionality into system and concrete infrastructure * services. - * + * *
* Note that consumer could register additional functionality at later point * by using service and functionality specific APIs. - * + * *
* The consumer is required to use returned session for all communication
* with broker or one of the broker services. The session is announced to
* the consumer by invoking
* {@link Consumer#onSessionInitiated(ConsumerSession)}.
- *
+ *
* @param cons
* Consumer to be registered.
- * @param context
* @return a session specific to consumer registration
* @throws IllegalArgumentException
* If the consumer is null
.
* @throws IllegalStateException
* If the consumer is already registered.
*/
+ ConsumerSession registerConsumer(Consumer cons);
+
+ /*
+ * @deprecated Use registerConsumer(Consumer cons) instead (BundleContext is no longer used)
+ */
+ @Deprecated
ConsumerSession registerConsumer(Consumer cons, BundleContext context);
/**
* Registers the {@link Provider}, which will use the SAL layer.
- *
+ *
*
* During the registration, the broker obtains the initial functionality * from consumer, using the {@link Provider#getProviderFunctionality()}, and * register that functionality into system and concrete infrastructure * services. - * - *
- * Note that consumer could register additional functionality at later point - * by using service and functionality specific APIs (e.g. - * {@link ProviderSession#addRpcImplementation(QName, RpcImplementation)} - * *
* The consumer is required to use returned session for all
* communication with broker or one of the broker services. The session is
* announced to the consumer by invoking
* {@link Provider#onSessionInitiated(ProviderSession)}.
- *
- *
+ *
+ *
* @param prov
* Provider to be registered.
- * @param context
* @return a session unique to the provider registration.
* @throws IllegalArgumentException
* If the provider is null
.
* @throws IllegalStateException
* If the consumer is already registered.
*/
+ ProviderSession registerProvider(Provider prov);
+
+ /*
+ * @deprecated Use registerProvider(Provider cons) instead (BundleContext is no longer used)
+ */
+ @Deprecated
ProviderSession registerProvider(Provider prov, BundleContext context);
/**
* {@link Consumer} specific access to the SAL functionality.
- *
+ *
*
* ConsumerSession is {@link Consumer}-specific access to the SAL * functionality and infrastructure services. - * + * *
* The session serves to store SAL context (e.g. registration of
* functionality) for the consumer and provides access to the SAL
* infrastructure services and other functionality provided by
* {@link Provider}s.
- *
-
- *
+ *
+ *
+ *
*/
public interface ConsumerSession {
- /**
- * Sends an RPC to other components registered to the broker.
- *
- * @see RpcImplementation
- * @param rpc
- * Name of RPC
- * @param input
- * Input data to the RPC
- * @return Result of the RPC call
- */
- Future
* The close operation unregisters a consumer and remove all registered
* functionality of the consumer from the system.
- *
+ *
*/
void close();
}
/**
* {@link Provider} specific access to the SAL functionality.
- *
+ *
*
* ProviderSession is {@link Provider}-specific access to the SAL
* functionality and infrastructure services, which also allows for exposing
* the provider's functionality to the other {@link Consumer}s.
- *
+ *
*
* The session serves to store SAL context (e.g. registration of
* functionality) for the providers and exposes access to the SAL
* infrastructure services, dynamic functionality registration and any other
* functionality provided by other {@link Provider}s.
- *
+ *
*/
public interface ProviderSession extends ConsumerSession {
- /**
- * Registers an implementation of the rpc.
- *
- *
- * The registered rpc functionality will be available to all other
- * consumers and providers registered to the broker, which are aware of
- * the {@link QName} assigned to the rpc.
- *
- *
- * There is no assumption that rpc type is in the set returned by
- * invoking {@link RpcImplementation#getSupportedRpcs()}. This allows
- * for dynamic rpc implementations.
- *
- * @param rpcType
- * Name of Rpc
- * @param implementation
- * Provider's Implementation of the RPC functionality
- * @throws IllegalArgumentException
- * If the name of RPC is invalid
- */
- void addRpcImplementation(QName rpcType,
- RpcImplementation implementation)
- throws IllegalArgumentException;
-
- /**
- * Unregisters an Rpc implementation
- *
- * @param rpcType
- * Name of Rpc
- * @param implementation
- * Registered Implementation of the Rpc functionality
- * @throws IllegalArgumentException
- */
- void removeRpcImplementation(QName rpcType,
- RpcImplementation implementation)
- throws IllegalArgumentException;
-
/**
* Closes a session between provider and SAL.
- *
+ *
*
* The close operation unregisters a provider and remove all registered
* functionality of the provider from the system.
*/
@Override
- public void close();
+ void close();
@Override
boolean isClosed();