@Override public void setValue(T value) throws InterruptedException, ExecutionException, ChannelException { channel.setValue(value); }
@Override public Future<T> setValueAsync(T value) throws ChannelException { return channel.setValueAsync(value); }
@Override public T getValue(boolean force) throws InterruptedException, TimeoutException, ChannelException, ExecutionException { return readback.getValue(force); }
@Override public Future<T> getValueAsync(boolean force) throws IllegalStateException, ChannelException { return readback.getValueAsync(force); }
@Override public void addPropertyChangeListener(String name, PropertyChangeListener l) { readback.addPropertyChangeListener(name, l); }
@Override public void removePropertyChangeListener(PropertyChangeListener l) { readback.removePropertyChangeListener(l); }
@Override public void destroy() throws ChannelException { channel.destroy(); readback.destroy(); }
@Override public boolean isConnected() { return channel.isConnected() && readback.isConnected(); }
@Override public boolean isMonitored() { return readback.isMonitored(); }
@Override public void setMonitored(boolean monitored) throws ChannelException { readback.setMonitored(monitored); }
@Override public String getSource() { return readback.getSource(); }
@Override public void setSize(Integer size) throws ChannelException { readback.setSize(size); }
@Override public Integer getSize() { return readback.getSize(); }
@Override public Future<T> waitForValueAsync(T rvalue) throws ChannelException { return readback.waitForValueAsync(rvalue); }
@Override public void addPropertyChangeListener(PropertyChangeListener l) { readback.addPropertyChangeListener(l); }
@Override public Future<T> waitForValueAsync(T rvalue, Comparator<T> comparator, long waitRetryPeriod) throws ChannelException { return readback.waitForValueAsync(rvalue, comparator, waitRetryPeriod); }
@Override public String getName() { return channel.getName(); // Name is the name of the set channel }