/** * Adds a listener to the value. This method is thread safe. * * @param listener a new listener */ @Override public void addPVReaderListener(PVReaderListener<? super T> listener) { if (isClosed()) throw new IllegalStateException("Can't add listeners to a closed PV"); @SuppressWarnings("unchecked") PVReaderListener<T> convertedListener = (PVReaderListener<T>) listener; pvReaderListeners.add(convertedListener); }
/** * Adds a listener to the value, which is notified only if the value is * of a given type. This method is thread safe. * * @param listener a new listener */ @Override public void addPVReaderListener(final Class<?> clazz, final PVReaderListener listener) { if (isClosed()) throw new IllegalStateException("Can't add listeners to a closed PV"); pvReaderListeners.add(new ListenerDelegate<T>(clazz, listener)); }