]> git.argeo.org Git - gpl/argeo-slc.git/blob - runtime/org.argeo.slc.detached/src/main/java/org/argeo/slc/detached/drivers/AbstractDriver.java
Move org.argeo.slc.detached
[gpl/argeo-slc.git] / runtime / 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 import org.argeo.slc.detached.DetachedXmlConverter;
8
9 public abstract class AbstractDriver implements DetachedDriver {
10 private boolean active = true;
11 private DetachedExecutionServer executionServer = null;
12 private long receiveAnswerTimeout = 10000l;
13
14 private DetachedXmlConverter xmlConverter = null;
15
16 public synchronized void start() {
17
18 Thread driverThread = new Thread(new Runnable() {
19
20 public void run() {
21 while (active) {
22 try {
23 DetachedRequest request = receiveRequest();
24 if (!active)
25 break;
26 DetachedAnswer answer = executionServer
27 .executeRequest(request);
28 sendAnswer(answer);
29 } catch (Exception e) {
30 if (e instanceof RuntimeException)
31 throw (RuntimeException) e;
32 else
33 e.printStackTrace();
34 }
35 }
36
37 }
38 }, "driverThread ("+getClass()+")");
39 driverThread.start();
40
41 }
42
43 public void setExecutionServer(DetachedExecutionServer executionServer) {
44 this.executionServer = executionServer;
45 }
46
47 public synchronized void stop() {
48 active = false;
49 notifyAll();
50 }
51
52 public synchronized boolean isActive() {
53 return active;
54 }
55
56 public synchronized void setActive(boolean active) {
57 this.active = active;
58 }
59
60 public DetachedXmlConverter getXmlConverter() {
61 return xmlConverter;
62 }
63
64 public void setXmlConverter(DetachedXmlConverter xmlConverter) {
65 this.xmlConverter = xmlConverter;
66 }
67
68 public long getReceiveAnswerTimeout() {
69 return receiveAnswerTimeout;
70 }
71
72 public void setReceiveAnswerTimeout(long reveiveTimeout) {
73 this.receiveAnswerTimeout = reveiveTimeout;
74 }
75
76 }