A developer implemented component that gets registered with the Broker.
Semantically, a consumer may:
- Subscribe for Notifications
- Invoke RPCs
- Read from either the operational or config data tree
- Write to the config data tree
If you need to:
- Emit Notifications
- Provide the implementation of RPCs
- Write to the operational data tree
Consider using a BindingAwareProvider
Examples:
To get a NotificationService:
{code
public void onSessionInitiated(ProviderContext session) {
NotificationProviderService notificationService = session.getSALService(NotificationProviderService.class);
notificationService.publish(notification)
}
where notification is an instance of a modeled Notification.
For more information on sending notifications via the NotificationProviderService
see org.opendaylight.controller.sal.binding.api.NotificationProviderService
A consumer can *invoke* and RPC ( ie, call foo(fooArgs)) but it cannot register an RPC
implementation with the MD-SAL that others can invoke(call).
To get an invokable RPC:
{code
public void onSessionInitiated(ProviderContext session) {
MyService rpcFlowSalService = session.getRpcService(MyService.class);
}
Where MyService.class is a Service interface generated from a yang model with RPCs modeled in it. The returned
rpcFlowSalService can be used like any other object by invoking its methods. Note, nothing special needs to be done
for RoutedRPCs. They just work.
To get a DataBroker to allow access to the data tree:
{code
public void onSessionInitiated(final ProviderContext session) {
DataBroker databroker = session.getSALService(BindingDataBroker.class);
}
}