summaryrefslogtreecommitdiffstats
path: root/sandbox/wjaniszewski/binding-erlang-runtime/src/main/java/org/apache/tuscany/sca/binding/erlang/impl/RpcServer.java
diff options
context:
space:
mode:
Diffstat (limited to 'sandbox/wjaniszewski/binding-erlang-runtime/src/main/java/org/apache/tuscany/sca/binding/erlang/impl/RpcServer.java')
-rw-r--r--sandbox/wjaniszewski/binding-erlang-runtime/src/main/java/org/apache/tuscany/sca/binding/erlang/impl/RpcServer.java16
1 files changed, 12 insertions, 4 deletions
diff --git a/sandbox/wjaniszewski/binding-erlang-runtime/src/main/java/org/apache/tuscany/sca/binding/erlang/impl/RpcServer.java b/sandbox/wjaniszewski/binding-erlang-runtime/src/main/java/org/apache/tuscany/sca/binding/erlang/impl/RpcServer.java
index 90c47091e8..ab10865c83 100644
--- a/sandbox/wjaniszewski/binding-erlang-runtime/src/main/java/org/apache/tuscany/sca/binding/erlang/impl/RpcServer.java
+++ b/sandbox/wjaniszewski/binding-erlang-runtime/src/main/java/org/apache/tuscany/sca/binding/erlang/impl/RpcServer.java
@@ -23,6 +23,7 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import org.apache.tuscany.sca.binding.erlang.ErlangBinding;
+import org.apache.tuscany.sca.binding.erlang.impl.exceptions.ErlangException;
import org.apache.tuscany.sca.runtime.RuntimeComponentService;
import com.ericsson.otp.erlang.OtpConnection;
@@ -33,6 +34,8 @@ public class RpcServer implements Runnable {
private RuntimeComponentService service;
private ErlangBinding binding;
private OtpSelf self;
+ ExecutorService executors;
+ private boolean stopRequested;
public RpcServer(RuntimeComponentService service, ErlangBinding binding) throws Exception {
this.service = service;
@@ -40,14 +43,19 @@ public class RpcServer implements Runnable {
self = new OtpSelf(binding.getNode());
boolean registered = self.publishPort();
if (!registered) {
- // TODO: throw exception, no epmd
+ //TODO: externalize messages?
+ throw new ErlangException("Problem with publishing service under epmd server.");
}
+ executors = Executors.newFixedThreadPool(10);
+ }
+
+ public void stop() {
+ stopRequested = true;
+ executors.shutdownNow();
}
public void run() {
- // TODO: thread management
- ExecutorService executors = Executors.newFixedThreadPool(10);
- while (true) {
+ while (!stopRequested) {
try {
OtpConnection connection = self.accept();
executors.execute(new RpcExecutor(service, binding, connection));