package com.hypirion.beckon;
import sun.misc.Signal;
import sun.misc.SignalHandler;
import java.util.List;
import clojure.lang.Seqable;
import clojure.lang.ISeq;
public class SignalFolder implements SignalHandler {
final Seqable originalList;
final private Runnable[] fns;
public SignalFolder(Seqable funs) {
ISeq seq = funs.seq();
// seq may be null
if (seq == null) {
fns = new Runnable[0];
}
else {
fns = new Runnable[seq.count()];
for (int i = 0; i < fns.length; i++) {
fns[i] = (Runnable) seq.first();
seq = seq.next();
}
}
originalList = funs;
}
public void handle(Signal sig) {
for (Runnable r : fns) {
boolean cont = true;
try {
r.run();
}
catch (Exception e) {
break;
}
}
}
}