This is the API part of https://git.opendaylight.org/gerrit/50487,
ported back to MD-SAL.
It allows a DOMRpcAvailabilityListener to request filtering of
notifications based on the RPC implementation class.
The other part of it is the ability for DOMRpcImplementation
to advertise its invocation cost -- allowing the RPC router
to make better routing decisions
Change-Id: Icdd36aeea0780bfae5883abd786244a9291b106f
Signed-off-by: Robert Varga <rovarga@cisco.com>
* @param rpcs RPC types which became unavailable
*/
void onRpcUnavailable(@Nonnull Collection<DOMRpcIdentifier> rpcs);
+
+ /**
+ * Implementation filtering method. This method is useful for forwarding RPC implementations,
+ * which need to ensure they do not re-announce their own implementations. Without this method
+ * a forwarder which registers an implementation would be notified of its own implementation,
+ * potentially re-exporting it as local -- hence creating a forwarding loop.
+ *
+ * @param impl RPC implementation being registered
+ * @return False if the implementation should not be reported, defaults to true.
+ */
+ default boolean acceptsImplementation(final DOMRpcImplementation impl) {
+ return true;
+ }
}
*/
@Nonnull CheckedFuture<DOMRpcResult, DOMRpcException>
invokeRpc(@Nonnull DOMRpcIdentifier rpc, @Nullable NormalizedNode<?, ?> input);
+
+ /**
+ * Return the relative invocation cost of this implementation. Default implementation return 0.
+ *
+ * @return Non-negative cost of invoking this implementation.
+ */
+ default long invocationCost() {
+ return 0;
+ }
}