10806922610c8c89a2c187432fd5ea29198df4d1
[packetcable.git] / protocol_plugins.packetcable / src / main / java / org / pcmm / concurrent / impl / Worker.java
1 /**
2  * 
3  */
4 package org.pcmm.concurrent.impl;
5
6 import java.util.concurrent.Callable;
7
8 import org.pcmm.concurrent.IWorker;
9 import org.slf4j.Logger;
10 import org.slf4j.LoggerFactory;
11
12 /**
13  * 
14  */
15 public class Worker implements IWorker {
16
17         private int waitTimer;
18
19         private Callable<?> task;
20         private Logger logger = LoggerFactory.getLogger(IWorker.class);
21
22         public Worker() {
23
24         }
25
26         public Worker(Callable<?> task) {
27                 this.task = task;
28         }
29
30         /*
31          * (non-Javadoc)
32          * 
33          * @see java.lang.Runnable#run()
34          */
35         @Override
36         public void run() {
37                 try {
38                         if (waitTimer > 0)
39                                 Thread.sleep(waitTimer);
40                         task.call();
41                 } catch (Throwable e) {
42                         logger.error(e.getMessage());
43                 }
44         }
45
46         /*
47          * (non-Javadoc)
48          * 
49          * @see org.pcmm.threading.IWorker#task(java.util.concurrent.Callable)
50          */
51         @Override
52         public void task(Callable<?> c) {
53                 logger.debug("Task added " + c);
54                 this.task = c;
55         }
56
57         /*
58          * (non-Javadoc)
59          * 
60          * @see org.pcmm.threading.IWorker#shouldWait(int)
61          */
62         @Override
63         public void shouldWait(int t) {
64                 logger.debug("Worker will start after :" + t + " ms");
65                 waitTimer = t;
66         }
67
68         /*
69          * (non-Javadoc)
70          * 
71          * @see org.pcmm.threading.IWorker#done()
72          */
73         @Override
74         public void done() {
75                 logger.debug("worker finished tasks");
76
77         }
78
79 }