View Javadoc

1   /*
2    * Copyright 2001-2004 The Apache Software Foundation.
3    * 
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    * 
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    * 
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
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          // noop
33      }
34      
35      /***
36       * @param sender
37       */
38      public AsyncRemoteResultSender(RemoteResultSender sender) {
39          this.sender = sender;
40      }
41      
42      /* (non-Javadoc)
43       * @see org.jdiagnose.remote.RemoteResultSender#send(org.jdiagnose.RemoteResult)
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  }