1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.jboss.netty.channel.socket;
17
18 import org.jboss.netty.channel.Channel;
19 import org.jboss.netty.channel.DefaultChannelFuture;
20
21 public class ChannelRunnableWrapper extends DefaultChannelFuture implements Runnable {
22
23 private final Runnable task;
24 private boolean started;
25
26 public ChannelRunnableWrapper(Channel channel, Runnable task) {
27 super(channel, true);
28 this.task = task;
29 }
30
31
32 public void run() {
33 synchronized (this) {
34 if (!isCancelled()) {
35 started = true;
36 } else {
37 return;
38 }
39 }
40 try {
41 task.run();
42 setSuccess();
43 } catch (Throwable t) {
44 setFailure(t);
45 }
46 }
47
48 @Override
49 public synchronized boolean cancel() {
50 if (started) {
51 return false;
52 }
53 return super.cancel();
54 }
55
56
57
58 }