package uk.ac.imperial.lsds.seepworker.core;
import java.util.ArrayList;
import java.util.List;
import uk.ac.imperial.lsds.seep.api.API;
import uk.ac.imperial.lsds.seep.api.RuntimeEvent;
import uk.ac.imperial.lsds.seep.api.RuntimeEventFactory;
import uk.ac.imperial.lsds.seep.api.data.OTuple;
public class SimpleCollector implements API {
private byte[] mem;
private OTuple o;
// Attributes for RuntimeEvent
private List<RuntimeEvent> rEvents;
private RuntimeEvent evaluationResults;
private Object lastEvaluationResults;
public SimpleCollector() {
this.rEvents = new ArrayList<>();
}
@Override
public int id() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void send(byte[] o) {
this.mem = o;
}
@Override
public void send(OTuple o) {
this.o = o;
}
@Override
public void sendAll(byte[] o) {
// TODO Auto-generated method stub
}
@Override
public void sendKey(byte[] o, int key) {
// TODO Auto-generated method stub
}
@Override
public void sendKey(byte[] o, String key) {
// TODO Auto-generated method stub
}
@Override
public void sendToStreamId(int streamId, byte[] o) {
// TODO Auto-generated method stub
}
@Override
public void sendToAllInStreamId(int streamId, byte[] o) {
// TODO Auto-generated method stub
}
@Override
public void sendStreamidKey(int streamId, byte[] o, int key) {
// TODO Auto-generated method stub
}
@Override
public void sendStreamidKey(int streamId, byte[] o, String key) {
// TODO Auto-generated method stub
}
@Override
public void send_index(int index, byte[] o) {
// TODO Auto-generated method stub
}
@Override
public void send_opid(int opId, byte[] o) {
// TODO Auto-generated method stub
}
public byte[] collectMem() {
return mem;
}
public OTuple collect() {
return o;
}
@Override
public void exception(String message) {
try {
throw new Exception();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void datasetSpilledToDisk(int datasetId) {
RuntimeEvent re = RuntimeEventFactory.makeSpillToDiskRuntimeEvent(datasetId);
this.rEvents.add(re);
}
@Override
public void failure() {
try {
throw new Exception();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public List<RuntimeEvent> getRuntimeEvents() {
if(lastEvaluationResults != null) {
evaluationResults = RuntimeEventFactory.makeEvaluateResults(lastEvaluationResults);
rEvents.add(evaluationResults);
}
return rEvents;
}
@Override
public void notifyEndOfLoop() {
RuntimeEvent re = RuntimeEventFactory.makeNotifyEndOfLoop();
this.rEvents.add(re);
}
@Override
public void storeEvaluateResults(Object obj) {
this.lastEvaluationResults = obj;
// evaluationResults = RuntimeEventFactory.makeEvaluateResults(obj);
//this.rEvents.add(re);
}
}