All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.epics.pvmanager.PV Maven / Gradle / Ivy

/**
 * Copyright (C) 2010-14 pvmanager developers. See COPYRIGHT.TXT
 * All rights reserved. Use is subject to license terms. See LICENSE.TXT
 */
package org.epics.pvmanager;

/**
 * A PV that can be both read and written. In general, the read payload will be
 * different from the write payload.
 *
 * @param  type of the read payload
 * @param  type of the write payload
 * @author carcassi
 */
public class PV implements PVReader, PVWriter {
    
    // This class is a wrapper around a reader and a write. It has no logic by
    // itself, and just forwards the messages to the appropriate object.
    
    private final PVReader reader;
    private final PVWriter writer;

    PV(PVReader reader, PVWriter writer) {
        this.reader = reader;
        this.writer = writer;
    }

    @Override
    public void addPVWriterListener(PVWriterListener listener) {
        writer.addPVWriterListener(listener);
    }

    @Override
    public void removePVWriterListener(PVWriterListener listener) {
        writer.removePVWriterListener(listener);
    }

    @Override
    public void write(W newValue) {
        writer.write(newValue);
    }

    @Override
    public Exception lastWriteException() {
        return writer.lastWriteException();
    }

    @Override
    public void addPVReaderListener(PVReaderListener listener) {
        reader.addPVReaderListener(listener);
    }

    @Override
    public void addPVReaderListener(Class clazz, PVReaderListener listener) {
        reader.addPVReaderListener(clazz, listener);
    }

    @Override
    public void removePVReaderListener(PVReaderListener listener) {
        reader.removePVReaderListener(listener);
    }

    @Override
    public String getName() {
        return reader.getName();
    }

    @Override
    public R getValue() {
        return reader.getValue();
    }

    @Override
    public void close() {
        reader.close();
        writer.close();
    }

    @Override
    public boolean isClosed() {
        return reader.isClosed();
    }

    @Override
    public Exception lastException() {
        return reader.lastException();
    }

    @Override
    public boolean isPaused() {
        return reader.isPaused();
    }

    @Override
    public void setPaused(boolean paused) {
        reader.setPaused(paused);
    }

    @Override
    public boolean isConnected() {
        return reader.isConnected();
    }

    @Override
    public boolean isWriteConnected() {
        return writer.isWriteConnected();
    }
    
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy