Files
dev/plugins/Redis.java
2023-10-31 13:02:07 +01:00

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");
}
}