Changes for parameters, ...
This commit is contained in:
@@ -318,7 +318,7 @@ public class Acquisition {
|
||||
t.start();
|
||||
|
||||
if(NEW_ENGINE){
|
||||
acquisitionEngine.execute(mapper.getResourceDescriptors(), mapper.getScript());
|
||||
acquisitionEngine.execute(mapper.getResourceDescriptors(), mapper.getScript(), new ArrayList<String>());
|
||||
}
|
||||
else {
|
||||
actionLoop.prepare();
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
package ch.psi.fda.aq.ng;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.BlockingQueue;
|
||||
@@ -60,7 +61,7 @@ public class AcquisitionEngineNG {
|
||||
System.setProperty("python.options.internalTablesImpl", "weak");
|
||||
}
|
||||
|
||||
public void execute(Map<String, ?> resourceDescriptors, String script){
|
||||
public void execute(Map<String, ?> resourceDescriptors, String script, List<String> parameter){
|
||||
|
||||
// TODO Remove debugging messages
|
||||
// For debugging purpose only
|
||||
@@ -73,36 +74,14 @@ public class AcquisitionEngineNG {
|
||||
// Set logger
|
||||
engine.put("logger", logger);
|
||||
|
||||
// Retrieve and set resources
|
||||
for(String k: resourceDescriptors.keySet()){
|
||||
if(resourceDescriptors.get(k) instanceof ChannelDescriptor){
|
||||
ChannelDescriptor<?> descriptor = (ChannelDescriptor<?>)resourceDescriptors.get(k);
|
||||
try {
|
||||
engine.put(k, cservice.createChannel(descriptor));
|
||||
} catch (ChannelException | InterruptedException | TimeoutException e) {
|
||||
throw new RuntimeException("Unable to create resource for channel: "+descriptor.getName(),e);
|
||||
}
|
||||
}
|
||||
else if(resourceDescriptors.get(k) instanceof ShellDescriptor){
|
||||
engine.put(k, new ShellResource());
|
||||
}
|
||||
else if(resourceDescriptors.get(k) instanceof ProbeDescriptor){
|
||||
ProbeDescriptor descriptor = (ProbeDescriptor) resourceDescriptors.get(k);
|
||||
List<Channel<?>> channels = new ArrayList<>();
|
||||
|
||||
for(ChannelDescriptor<?> s: descriptor.getSensors()){
|
||||
try {
|
||||
channels.add(cservice.createChannel(s));
|
||||
|
||||
} catch (ChannelException | InterruptedException | TimeoutException e) {
|
||||
throw new RuntimeException("Unable to create resource for channel: "+s.getName(),e);
|
||||
}
|
||||
}
|
||||
engine.put(k, new ChannelProbeResource(channels, outQueue));
|
||||
}
|
||||
else{
|
||||
throw new RuntimeException("Resource type not supported: "+resourceDescriptors.get(k).getClass().getName());
|
||||
}
|
||||
// Set parameters
|
||||
engine.put("parameter", parameter);
|
||||
|
||||
// Create/retrieve and set resources
|
||||
Map<String,?> resources = createResources(resourceDescriptors);
|
||||
engine.put("resources", resources);
|
||||
for(String k: resources.keySet()){ // For convenience make resources also available as variable named by the resource id
|
||||
engine.put(k, resources.get(k));
|
||||
}
|
||||
|
||||
// Execute script
|
||||
@@ -115,6 +94,44 @@ public class AcquisitionEngineNG {
|
||||
}
|
||||
}
|
||||
|
||||
private Map<String,?> createResources(Map<String, ?> resourceDescriptors){
|
||||
Map<String,Object> resources = new HashMap<>();
|
||||
for(String k: resourceDescriptors.keySet()){
|
||||
if(resourceDescriptors.get(k) instanceof ChannelDescriptor){
|
||||
ChannelDescriptor<?> descriptor = (ChannelDescriptor<?>)resourceDescriptors.get(k);
|
||||
try {
|
||||
resources.put(k, cservice.createChannel(descriptor));
|
||||
// engine.put(k, cservice.createChannel(descriptor));
|
||||
} catch (ChannelException | InterruptedException | TimeoutException e) {
|
||||
throw new RuntimeException("Unable to create resource for channel: "+descriptor.getName(),e);
|
||||
}
|
||||
}
|
||||
else if(resourceDescriptors.get(k) instanceof ShellDescriptor){
|
||||
resources.put(k, new ShellResource());
|
||||
// engine.put(k, new ShellResource());
|
||||
}
|
||||
else if(resourceDescriptors.get(k) instanceof ProbeDescriptor){
|
||||
ProbeDescriptor descriptor = (ProbeDescriptor) resourceDescriptors.get(k);
|
||||
List<Channel<?>> channels = new ArrayList<>();
|
||||
|
||||
for(ChannelDescriptor<?> s: descriptor.getSensors()){
|
||||
try {
|
||||
channels.add(cservice.createChannel(s));
|
||||
|
||||
} catch (ChannelException | InterruptedException | TimeoutException e) {
|
||||
throw new RuntimeException("Unable to create resource for channel: "+s.getName(),e);
|
||||
}
|
||||
}
|
||||
resources.put(k, new ChannelProbeResource(channels, outQueue));
|
||||
// engine.put(k, new ChannelProbeResource(channels, outQueue));
|
||||
}
|
||||
else{
|
||||
throw new RuntimeException("Resource type not supported: "+resourceDescriptors.get(k).getClass().getName());
|
||||
}
|
||||
}
|
||||
return resources;
|
||||
}
|
||||
|
||||
public BlockingQueue<Message> getOutQueue(){
|
||||
return outQueue;
|
||||
}
|
||||
|
||||
@@ -18,7 +18,9 @@
|
||||
*/
|
||||
package ch.psi.fda.aq.ng;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -92,8 +94,14 @@ public class AcquisitionEngineNGResource {
|
||||
rdesc.putAll(edescriptor.getResources());
|
||||
}
|
||||
|
||||
Map<String, ?> map =createResourceDescriptors(rdesc);
|
||||
engine.execute(map, lmanager.getLogic(id));
|
||||
Map<String, ?> map = createResourceDescriptors(rdesc);
|
||||
|
||||
List<String> parameters = new ArrayList<>();
|
||||
if(edescriptor.getParameter()!=null){
|
||||
parameters = edescriptor.getParameter();
|
||||
}
|
||||
|
||||
engine.execute(map, lmanager.getLogic(id), parameters);
|
||||
}
|
||||
|
||||
@PUT
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
*/
|
||||
package ch.psi.fda.aq.ng;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
@@ -128,7 +129,7 @@ public class AcquisitionEngineNGTest {
|
||||
logger.info("Script to execute: "+mapper.getScript());
|
||||
|
||||
|
||||
engine.execute(mapper.getResourceDescriptors(), mapper.getScript());
|
||||
engine.execute(mapper.getResourceDescriptors(), mapper.getScript(), new ArrayList<String>());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -174,7 +175,7 @@ public class AcquisitionEngineNGTest {
|
||||
|
||||
long start, end, elapsed;
|
||||
start = System.currentTimeMillis();
|
||||
engine.execute(mapper.getResourceDescriptors(), mapper.getScript());
|
||||
engine.execute(mapper.getResourceDescriptors(), mapper.getScript(), new ArrayList<String>());
|
||||
end = System.currentTimeMillis();
|
||||
elapsed = end-start;
|
||||
logger.info("Elapsed time: "+elapsed);
|
||||
@@ -190,7 +191,7 @@ public class AcquisitionEngineNGTest {
|
||||
" print xr.getValue()\n";
|
||||
// " print 'done'\n";
|
||||
|
||||
engine.execute(rdescriptors, script);
|
||||
engine.execute(rdescriptors, script, new ArrayList<String>());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user