diff options
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.java | 16 |
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)); |