1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.jdiagnose.remote;
17
18 import org.jdiagnose.RemoteResult;
19 import org.jdiagnose.concurrent.Executor;
20 import org.jdiagnose.concurrent.QueuedExecutor;
21
22 /***
23 * @author jmccrindle
24 */
25 public class AsyncRemoteResultSender implements RemoteResultSender {
26
27 private Executor executor = new QueuedExecutor();
28 private RemoteResultSender sender = null;
29 private ExceptionListener exceptionListener = null;
30
31 public AsyncRemoteResultSender() {
32
33 }
34
35 /***
36 * @param sender
37 */
38 public AsyncRemoteResultSender(RemoteResultSender sender) {
39 this.sender = sender;
40 }
41
42
43
44
45 public void send(final RemoteResult result) throws RemoteResultException {
46 try {
47 executor.execute(new Runnable() {
48 public void run() {
49 try {
50 sender.send(result);
51 } catch (RemoteResultException e) {
52 exceptionListener.onException(e);
53 }
54 }
55 });
56 } catch (InterruptedException e) {
57 exceptionListener.onException(e);
58 }
59 }
60
61 /***
62 * @param executor The executor to set.
63 */
64 public void setExecutor(Executor executor) {
65 this.executor = executor;
66 }
67 /***
68 * @param sender The sender to set.
69 */
70 public void setSender(RemoteResultSender sender) {
71 this.sender = sender;
72 }
73 }