package wxyz.mf.plugin.services;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import arc.mf.plugin.PluginLog;
import arc.mf.plugin.ServiceExecutor;
import arc.xml.XmlDoc.Element;
import arc.xml.XmlWriter;
import wxyz.mf.plugin.util.MultiThreadPluginService;
public class SvcTest extends MultiThreadPluginService<Integer> {
private Interface _defn;
public SvcTest() {
_defn = new Interface();
}
@Override
public Access access() {
return ACCESS_ACCESS;
}
@Override
public Interface definition() {
return _defn;
}
@Override
public String description() {
return "Test multithreading.";
}
@Override
public String name() {
return "omics.test";
}
@Override
protected void consume(ServiceExecutor executor, Integer input, PluginLog log) throws Throwable {
Thread.sleep(1000);
String uuid = executor.execute("server.uuid").value("uuid");
if (input == 15) {
log.add(PluginLog.WARNING, "#8: Mock Exception for value 15.");
throw new Exception("Mock Exception for value 15.");
}
System.out.println(Thread.currentThread().getName() + " consumed: " + input);
System.out.println(Thread.currentThread().getName() + " uuid: " + uuid);
}
@Override
protected Collection<Integer> produce(Element args, Inputs in, Outputs out, XmlWriter w,
Map<String, Object> intermediateResults) throws Throwable {
List<Integer> inputs = new ArrayList<Integer>(100);
for (int i = 0; i < 20; i++) {
inputs.add(i);
}
return inputs;
}
}
Search This Blog
Multi-threading in Mediaflux Plugin Service
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment