]> git.argeo.org Git - gpl/argeo-slc.git/blob - org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/drivers/AbstractDriver.java
ac4851517836dea4d2285298fe1d229b3081a635
[gpl/argeo-slc.git] / org.argeo.slc.detached / src / main / java / org / argeo / slc / detached / drivers / AbstractDriver.java
1 package org.argeo.slc.detached.drivers;
2
3 import org.argeo.slc.detached.DetachedAnswer;
4 import org.argeo.slc.detached.DetachedDriver;
5 import org.argeo.slc.detached.DetachedExecutionServer;
6 import org.argeo.slc.detached.DetachedRequest;
7
8 public abstract class AbstractDriver implements DetachedDriver {
9 private boolean active = true;
10 private DetachedExecutionServer executionServer = null;
11
12 public synchronized void start() {
13
14 Thread driverThread = new Thread(new Runnable() {
15
16 public void run() {
17 while (active) {
18 try {
19 DetachedRequest request = receiveRequest();
20 if (!active)
21 break;
22 DetachedAnswer answer = executionServer
23 .executeStep(request);
24 sendAnswer(answer);
25 } catch (Exception e) {
26 if (e instanceof RuntimeException)
27 throw (RuntimeException) e;
28 else
29 e.printStackTrace();
30 }
31 }
32
33 }
34 }, "driverThread");
35 driverThread.start();
36
37 }
38
39 public void setExecutionServer(DetachedExecutionServer executionServer) {
40 this.executionServer = executionServer;
41 }
42
43 public synchronized void stop() {
44 active = false;
45 notifyAll();
46 }
47
48 public synchronized boolean isActive() {
49 return active;
50 }
51
52 public synchronized void setActive(boolean active) {
53 this.active = active;
54 }
55
56 }