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:
authorwjaniszewski <wjaniszewski@13f79535-47bb-0310-9956-ffa450edef68>2009-03-02 22:49:01 +0000
committerwjaniszewski <wjaniszewski@13f79535-47bb-0310-9956-ffa450edef68>2009-03-02 22:49:01 +0000
commit65c9710b644bd3ef0f5dd21aaa0049f984394c57 (patch)
treee67b40fea3ffe03bc0d28f0fbca5e020ef49fcc9 /sandbox/wjaniszewski/binding-erlang-runtime/src/main/java/org/apache/tuscany/sca/binding/erlang/impl/RpcServer.java
parent6c6ad2fbdd72a4aabc4025339a3d6aa090668444 (diff)
Epmd starts automatically - if epmd is not available tests are beeing ignored. Normalized service/reference RPC, added some error handling.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@749461 13f79535-47bb-0310-9956-ffa450edef68
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));