diff options
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.java | 29 |
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())); } } |