@Deprecated public interface BindingAwareProvider
Semantically, a provider may:
If a class is not doing at least one of those three, consider using
a BindingAwareConsumer instead:
see BindingAwareConsumer
In addition, a BindingAwareProvider can in pursuit of its goals:
Examples:
To get a NotificationService:
public void onSessionInitiated(ProviderContext session) {
NotificationProviderService notificationService = session.getSALService(NotificationProviderService.class);
}
For more information on sending notifications via the NotificationProviderService
see NotificationProviderService
To register an RPC implementation:
public void onSessionInitiated(ProviderContext session) {
RpcRegistration<MyService> registration = session.addRpcImplementation(MyService.class, myImplementationInstance);
}
Where MyService.class is a Service interface generated from a yang model with RPCs modeled in it and myImplementationInstance is an instance of a class that implements MyService.
To register a Routed RPC Implementation:
public void onSessionInitiated(ProviderContext session) {
RoutedRpcRegistration<SalFlowService> flowRegistration = session.addRoutedRpcImplementation(SalFlowService.class,
salFlowServiceImplementationInstance);
flowRegistration.registerPath(NodeContext.class, nodeInstanceId);
}
Where SalFlowService.class is a Service interface generated from a yang model with RPCs modeled in it and salFlowServiceImplementationInstance is an instance of a class that implements SalFlowService.
The line:
flowRegistration.registerPath(NodeContext.class, nodeInstanceId);
Is indicating that the RPC implementation is registered to handle RPC invocations that have their NodeContext
pointing to the node with instance id nodeInstanceId. This bears a bit of further explanation. RoutedRPCs can be
'routed' to an implementation based upon 'context'. 'context' is a pointer (instanceId) to some place in the data
tree. In this example, the 'context' is a pointer to a Node. In this way, a provider can register its ability to
provide a service for a particular Node, but not *all* Nodes. The Broker routes the RPC by 'context' to the correct
implementation, without the caller having to do extra work. Because of this when a RoutedRPC is registered, it
needs to also be able to indicate for which 'contexts' it is providing an implementation.
An example of a Routed RPC would be an updateFlow(node, flow) that would be routed based on node to the provider which had registered to provide it *for that node*.
To get a DataBroker to allow access to the data tree:
public void onSessionInitiated(final ProviderContext session) {
DataBroker databroker = session.getSALService(BindingDataBroker.class);
}
Modifier and Type | Method and Description |
---|---|
void |
onSessionInitiated(BindingAwareBroker.ProviderContext session)
Deprecated.
Callback signaling initialization of the consumer session to the SAL.
|
void onSessionInitiated(BindingAwareBroker.ProviderContext session)
The consumer MUST use the session for all communication with SAL or retrieving SAL infrastructure services.
This method is invoked by
BindingAwareBroker.registerProvider(BindingAwareProvider)
session
- Unique session between consumer and SAL.Copyright © 2019 OpenDaylight. All rights reserved.