/*******************************************************************************
* Copyright (c) 2011 The Board of Trustees of the Leland Stanford Junior University
* as Operator of the SLAC National Accelerator Laboratory.
* Copyright (c) 2011 Brookhaven National Laboratory.
* EPICS archiver appliance is distributed subject to a Software License Agreement found
* in file LICENSE that is included with this distribution.
*******************************************************************************/
package org.epics.archiverappliance.retrieval.client;
import java.sql.Timestamp;
import java.util.HashMap;
import org.epics.archiverappliance.EventStream;
import org.epics.archiverappliance.Reader;
/**
* Similar to the reader interface, this is the main retrieval interface.
* The main implementation is over a PB over HTTP .raw call to the server.
* This is a streaming interface in that data for multiple PVs are returned as part of the same EventStream.
* Out-of-band events (such as transitions into another PV's data) are passed as events on the RetrievalEventProcessor.
*
* @author mshankar
* @see DataRetrieval
* @see Reader
*/
public interface DataRetrieval {
/**
* Get data for multiple PVs from starttime to endtime.
* Pass out-of-band events into the supplied retrievalEventProcessor
* We default to getting raw data
* @param pvNames The name of PVs
* @param startTime Timestamp
* @param endTime Timestamp
* @param retrievalEventProcessor RetrievalEventProcessor
* @return EventStream Data for PVs
*/
public EventStream getDataForPVS(String[] pvNames, Timestamp startTime, Timestamp endTime, RetrievalEventProcessor retrievalEventProcessor);
/**
* Get data for multiple PVs from starttime to endtime.
* Pass out-of-band events into the supplied retrievalEventProcessor
* @param pvNames The name of PVs
* @param startTime Timestamp
* @param endTime Timestamp
* @param retrievalEventProcessor RetrievalEventProcessor
* @param useReducedDataSet Is it ok to use a reduced data set?
* @return EventStream Data for PVs
*/
public EventStream getDataForPVS(String[] pvNames, Timestamp startTime, Timestamp endTime, RetrievalEventProcessor retrievalEventProcessor, boolean useReducedDataSet);
/**
* Get data for multiple PVs from starttime to endtime.
* Pass out-of-band events into the supplied retrievalEventProcessor
* @param pvNames The name of PVs
* @param startTime Timestamp
* @param endTime Timestamp
* @param retrievalEventProcessor RetrievalEventProcessor
* @param useReducedDataSet Is it ok to use a reduced data set?
* @param otherParams Any other name/value pairs that are passed onto the server.
* @return EventStream Data for PVs
*/
public EventStream getDataForPVS(String[] pvNames, Timestamp startTime, Timestamp endTime, RetrievalEventProcessor retrievalEventProcessor, boolean useReducedDataSet, HashMap<String, String> otherParams);
}