package uk.ac.imperial.lsds.seepworker.core.input; import java.util.List; import uk.ac.imperial.lsds.seep.api.DataStoreType; import uk.ac.imperial.lsds.seep.api.data.ITuple; import uk.ac.imperial.lsds.seep.api.data.Schema; import uk.ac.imperial.lsds.seep.api.data.ZCITuple; import uk.ac.imperial.lsds.seep.core.InputAdapter; import uk.ac.imperial.lsds.seep.core.InputAdapterReturnType; import uk.ac.imperial.lsds.seepworker.WorkerConfig; import uk.ac.imperial.lsds.seepworker.core.Dataset; public class DatasetInputAdapter implements InputAdapter { final private short RETURN_TYPE = InputAdapterReturnType.ONE.ofType(); private int streamId; private Dataset dataset; private ZCITuple iTuple; public DatasetInputAdapter(WorkerConfig wc, int streamId, Dataset dataset) { this.streamId = streamId; this.dataset = dataset; Schema expectedSchema = this.dataset.getSchemaForDataset(); //this.iTuple = new ITuple(expectedSchema); this.iTuple = new ZCITuple(expectedSchema); } @Override public int getStreamId() { return streamId; } @Override public short returnType() { return RETURN_TYPE; } @Override public DataStoreType getDataStoreType() { // In this case it's dynamic. return dataset.getDataReference().getDataStore().type(); } @Override public ITuple pullDataItem(int timeout) { ITuple i = dataset.consumeData_zerocopy(iTuple); return i; // byte[] data = dataset.consumeData(); // if(data == null) return null; // iTuple.setData(data); // iTuple.setStreamId(streamId); // return iTuple; } public ITuple _pullDataItem(int timeout) { byte[] data = dataset.consumeData(); if(data == null) return null; iTuple.setData(data); iTuple.setStreamId(streamId); return iTuple; } @Override public List<ITuple> pullDataItems(int timeout) { // TODO: will use Dataset.read(int number elements); return null; } }