00850bac82a0cae3c4af2f727ef591bb6df33978
[packetcable.git] / packetcable-driver / src / main / java / org / pcmm / concurrent / impl / Worker.java
1 /*
2  * Copyright (c) 2014 Cable Television Laboratories, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.pcmm.concurrent.impl;
10
11 import java.util.concurrent.Callable;
12
13 import org.pcmm.concurrent.IWorker;
14 import org.slf4j.Logger;
15 import org.slf4j.LoggerFactory;
16
17 /**
18  *
19  */
20 public class Worker implements IWorker {
21
22         private int waitTimer;
23
24         private Callable<?> task;
25         private Logger logger = LoggerFactory.getLogger(IWorker.class);
26
27         public Worker() {
28
29         }
30
31         public Worker(Callable<?> task) {
32                 this.task = task;
33         }
34
35         /*
36          * (non-Javadoc)
37          *
38          * @see java.lang.Runnable#run()
39          */
40         @Override
41         public void run() {
42                 try {
43                         if (waitTimer > 0)
44                                 Thread.sleep(waitTimer);
45                         task.call();
46                 } catch (Throwable e) {
47                         logger.error(e.getMessage());
48                 }
49         }
50
51         /*
52          * (non-Javadoc)
53          *
54          * @see org.pcmm.threading.IWorker#task(java.util.concurrent.Callable)
55          */
56         @Override
57         public void task(Callable<?> c) {
58                 logger.debug("Task added " + c);
59                 this.task = c;
60         }
61
62         /*
63          * (non-Javadoc)
64          *
65          * @see org.pcmm.threading.IWorker#shouldWait(int)
66          */
67         @Override
68         public void shouldWait(int t) {
69                 logger.debug("Worker will start after :" + t + " ms");
70                 waitTimer = t;
71         }
72
73         /*
74          * (non-Javadoc)
75          *
76          * @see org.pcmm.threading.IWorker#done()
77          */
78         @Override
79         public void done() {
80                 logger.debug("worker finished tasks");
81
82         }
83
84 }