summaryrefslogtreecommitdiffstats
path: root/srv6/srv6-impl/src/main/java/io/fd/hc2vpp/srv6/util/function/LocalSidFunctionBindingRegistry.java
diff options
context:
space:
mode:
Diffstat (limited to 'srv6/srv6-impl/src/main/java/io/fd/hc2vpp/srv6/util/function/LocalSidFunctionBindingRegistry.java')
-rw-r--r--srv6/srv6-impl/src/main/java/io/fd/hc2vpp/srv6/util/function/LocalSidFunctionBindingRegistry.java29
1 files changed, 23 insertions, 6 deletions
diff --git a/srv6/srv6-impl/src/main/java/io/fd/hc2vpp/srv6/util/function/LocalSidFunctionBindingRegistry.java b/srv6/srv6-impl/src/main/java/io/fd/hc2vpp/srv6/util/function/LocalSidFunctionBindingRegistry.java
index d56656fb9..361f042a8 100644
--- a/srv6/srv6-impl/src/main/java/io/fd/hc2vpp/srv6/util/function/LocalSidFunctionBindingRegistry.java
+++ b/srv6/srv6-impl/src/main/java/io/fd/hc2vpp/srv6/util/function/LocalSidFunctionBindingRegistry.java
@@ -28,23 +28,40 @@ import org.slf4j.LoggerFactory;
abstract class LocalSidFunctionBindingRegistry<T extends LocalSidFunctionRequest> {
private static final Logger LOG = LoggerFactory.getLogger(LocalSidFunctionBindingRegistry.class);
- final List<LocalSidFunctionBinder<T>> binders;
+ final List<LocalSidFunctionWriteBinder<T>> wBinders;
+ final List<LocalSidFunctionReadBinder> rBinders;
+
LocalSidFunctionBindingRegistry() {
- binders = new ArrayList<>();
+ wBinders = new ArrayList<>();
+ rBinders = new ArrayList<>();
+ }
+
+ @SuppressWarnings("unchecked")
+ public void registerWriteFunctionType(@Nonnull final LocalSidFunctionWriteBinder binder) {
+ checkNotNull(binder, "Cannot register null binder");
+ if (!isFunctionRegistered(binder)) {
+ wBinders.add(binder);
+ } else {
+ LOG.warn("Binder for class already registered. Canceling registration for {}.", binder);
+ }
+ }
+
+ private boolean isFunctionRegistered(@Nonnull final LocalSidFunctionWriteBinder binder) {
+ return wBinders.stream().parallel().anyMatch(locBinder -> locBinder.getClass().equals(binder.getClass()));
}
@SuppressWarnings("unchecked")
- public void registerFunctionType(@Nonnull final LocalSidFunctionBinder binder) {
+ public void registerReadFunctionType(@Nonnull final LocalSidFunctionReadBinder binder) {
checkNotNull(binder, "Cannot register null binder");
if (!isFunctionRegistered(binder)) {
- binders.add(binder);
+ rBinders.add(binder);
} else {
LOG.warn("Binder for class already registered. Canceling registration for {}.", binder);
}
}
- private boolean isFunctionRegistered(@Nonnull final LocalSidFunctionBinder binder) {
- return binders.stream().parallel().anyMatch(locBinder -> locBinder.getClass().equals(binder.getClass()));
+ private boolean isFunctionRegistered(@Nonnull final LocalSidFunctionReadBinder binder) {
+ return rBinders.stream().parallel().anyMatch(locBinder -> locBinder.getClass().equals(binder.getClass()));
}
}