Skip to content
Snippets Groups Projects
Commit 9fccbf5f authored by Mirco Nasuti's avatar Mirco Nasuti
Browse files

use actor with parameter for experiments

parent a0a2846f
No related merge requests found
package eu.hbp.mip.akka;
import akka.actor.Props;
import akka.actor.UntypedActor;
import akka.event.Logging;
import akka.event.LoggingAdapter;
import akka.japi.Creator;
import eu.hbp.mip.messages.external.QueryResult;
import java.util.UUID;
/**
* Created by mirco on 30.11.16.
*/
public class ExperimentActor extends UntypedActor {
public static Props props(final UUID expUUID) {
return Props.create(new Creator<ExperimentActor>() {
private static final long serialVersionUID = 1L;
@Override
public ExperimentActor create() throws Exception {
return new ExperimentActor(expUUID);
}
});
}
LoggingAdapter log = Logging.getLogger(getContext().system(), this);
private final UUID expUUID;
private ExperimentActor(UUID expUUID) {
this.expUUID = expUUID;
}
@Override
public void onReceive(Object message) throws Throwable {
if (message instanceof QueryResult) {
QueryResult queryResult = (QueryResult) message;
log.info("received query result for : " + expUUID.toString());
}
else {
unhandled(message);
}
}
}
package eu.hbp.mip.akka;
import akka.actor.UntypedActor;
import eu.hbp.mip.messages.external.Methods;
import eu.hbp.mip.messages.external.QueryResult;
import org.springframework.context.annotation.Scope;
import javax.inject.Inject;
import javax.inject.Named;
/**
* Created by mirco on 24.10.16.
*/
@Named("ListenerActor")
@Scope("prototype")
public class ListenerActor extends UntypedActor {
final ListeningService listeningService;
@Inject
public ListenerActor(@Named("ListeningService") ListeningService listeningService) {
this.listeningService = listeningService;
}
@Override
public void onReceive(Object message) throws Exception {
if (message instanceof QueryResult) {
QueryResult queryResult = (QueryResult) message;
listeningService.listen("received query result");
}
else if (message instanceof Methods) {
Methods methods = (Methods) message;
listeningService.listen("received methods");
}
else {
unhandled(message);
}
}
}
\ No newline at end of file
package eu.hbp.mip.akka;
import akka.actor.UntypedActor;
import akka.event.Logging;
import akka.event.LoggingAdapter;
import eu.hbp.mip.messages.external.Methods;
/**
* Created by mirco on 30.11.16.
*/
public class SimpleActor extends UntypedActor {
LoggingAdapter log = Logging.getLogger(getContext().system(), this);
@Override
public void onReceive(Object message) throws Throwable {
if (message instanceof Methods) {
Methods methods = (Methods) message;
log.info("received methods");
}
else {
unhandled(message);
}
}
}
package eu.hbp.mip.controllers;
import akka.actor.ActorRef;
import akka.actor.ActorSelection;
import akka.actor.ActorSystem;
import akka.actor.Props;
import com.google.common.collect.Lists;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import eu.hbp.mip.akka.ListenerActor;
import eu.hbp.mip.akka.ListeningService;
import eu.hbp.mip.akka.ExperimentActor;
import eu.hbp.mip.akka.SimpleActor;
import eu.hbp.mip.configuration.SecurityConfiguration;
import eu.hbp.mip.messages.external.MethodsQuery;
import eu.hbp.mip.model.Experiment;
......@@ -215,7 +217,8 @@ public class ExperimentApi {
StringBuilder response = new StringBuilder();
ActorSelection wokenActor = actorSystem.actorSelection(wokenPath);
wokenActor.tell(new MethodsQuery(), new ListenerActor(new ListeningService()).getSelf());
ActorRef simpleActor = actorSystem.actorOf(Props.create(SimpleActor.class));
wokenActor.tell(new MethodsQuery(), simpleActor);
// TODO: remove this
......@@ -294,18 +297,19 @@ public class ExperimentApi {
final eu.hbp.mip.messages.external.ExperimentQuery experimentQuery = experiment.computeQuery();
ActorSelection wokenActor = actorSystem.actorSelection(wokenPath);
wokenActor.tell(experimentQuery, new ListenerActor(new ListeningService()).getSelf());
ActorRef experimentActor = actorSystem.actorOf(Props.create(ExperimentActor.class, experiment.getUuid()));
wokenActor.tell(experimentQuery, experimentActor);
}
private void sendExaremeExperiment(Experiment experiment) {
// this runs in the background. For future optimization: use a thread pool
new Thread() {
@Override
public void run() {
String query = experiment.computeExaremeQuery();
String url = miningExaremeQueryUrl + "/" + EXAREME_LR_ALGO;
// Results are stored in the experiment object
// new Thread() {
// @Override
// public void run() {
// String query = experiment.computeExaremeQuery();
// String url = miningExaremeQueryUrl + "/" + EXAREME_LR_ALGO;
//
// // Results are stored in the experiment object
// try {
// executeExperiment(url, query, experiment);
// } catch (IOException e) {
......@@ -319,8 +323,8 @@ public class ExperimentApi {
// experiment.setResult("Unsupported variables !");
// }
// finishExpermient(experiment);
}
}.start();
// }
// }.start();
}
private void finishExpermient(Experiment experiment)
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment