87 lines
2.2 KiB
Java
87 lines
2.2 KiB
Java
import ch.psi.pshell.scan.Scan;
|
|
import ch.psi.pshell.scan.ScanListener;
|
|
import ch.psi.pshell.scan.ScanRecord;
|
|
import ch.psi.pshell.ui.Plugin;
|
|
import ch.psi.utils.State;
|
|
import redis.clients.jedis.Jedis;
|
|
import redis.clients.jedis.JedisPubSub;
|
|
|
|
/**
|
|
*
|
|
*/
|
|
public class Redis implements Plugin {
|
|
|
|
public static final String KEY_START = "Scan Start";
|
|
public static final String KEY_RECORD = "Record";
|
|
public static final String KEY_END = "Scan End";
|
|
public static final String CHANNEL_START = "Scan Start";
|
|
public static final String CHANNEL_RECORD = "Record";
|
|
public static final String CHANNEL_END = "Scan End";
|
|
|
|
Jedis jedis;
|
|
|
|
final ScanListener listener = new ScanListener() {
|
|
@Override
|
|
public void onScanStarted(Scan scan, String plotTitle) {
|
|
jedis.publish(CHANNEL_START, scan.getResult().toString());
|
|
jedis.set(KEY_START, scan.getResult().toString());
|
|
jedis.del(KEY_RECORD);
|
|
jedis.del(KEY_END);
|
|
}
|
|
|
|
@Override
|
|
public void onNewRecord(Scan scan, ScanRecord record) {
|
|
jedis.publish(CHANNEL_RECORD, record.toString());
|
|
jedis.lpush(KEY_RECORD, record.toString());
|
|
}
|
|
|
|
@Override
|
|
public void onScanEnded(Scan scan, Exception ex) {
|
|
jedis.publish(CHANNEL_END,scan.getResult().getPath());
|
|
jedis.set(KEY_END,scan.getResult().getPath());
|
|
|
|
|
|
}
|
|
};
|
|
|
|
//Overridable callbacks
|
|
@Override
|
|
public void onStart() {
|
|
jedis = new Jedis();
|
|
getContext().addScanListener(listener);
|
|
}
|
|
|
|
@Override
|
|
public void onStop() {
|
|
getContext().removeScanListener(listener);
|
|
if (jedis!=null){
|
|
jedis.close();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onInitialize(int runCount) {
|
|
|
|
}
|
|
|
|
@Override
|
|
public void onStateChange(State state, State former) {
|
|
|
|
}
|
|
|
|
@Override
|
|
public void onExecutedFile(String fileName, Object result) {
|
|
Jedis jSubscriber = new Jedis();
|
|
jSubscriber.subscribe(new JedisPubSub() {
|
|
@Override
|
|
public void onMessage(String channel, String message) {
|
|
// handle message
|
|
}
|
|
}, "channel");
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|