1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.apache.hadoop.hbase.hbql.impl;
22
23 import org.apache.hadoop.hbase.hbql.client.HBqlException;
24 import org.apache.hadoop.hbase.hbql.client.QueryFuture;
25
26 import java.util.concurrent.CountDownLatch;
27 import java.util.concurrent.TimeUnit;
28
29 public class QueryFutureImpl implements QueryFuture {
30
31 private final CountDownLatch latch = new CountDownLatch(1);
32 private HBqlException caughtException = null;
33 private long startTime = -1L;
34 private long completeTime = -1L;
35
36 public HBqlException getHBqlException() {
37 return this.caughtException;
38 }
39
40 public void setCaughtException(final HBqlException exception) {
41 this.caughtException = exception;
42 }
43
44 protected void markQueryStart() {
45 this.startTime = System.currentTimeMillis();
46 }
47
48 protected void markQueryComplete() {
49 this.completeTime = System.currentTimeMillis();
50 this.getLatch().countDown();
51 }
52
53 public boolean isStarted() {
54 return this.startTime != -1L;
55 }
56
57 public boolean isComplete() {
58 return this.completeTime != -1L;
59 }
60
61 public long getStartTime() {
62 return this.startTime;
63 }
64
65 public long getCompleteTime() {
66 return this.completeTime;
67 }
68
69 public long getElapsedTime() {
70 return this.getCompleteTime() - this.getStartTime();
71 }
72
73 private CountDownLatch getLatch() {
74 return this.latch;
75 }
76
77 public void await() throws InterruptedException {
78 getLatch().await();
79 }
80
81 public boolean await(final long timeout, final TimeUnit unit) throws InterruptedException {
82 return getLatch().await(timeout, unit);
83 }
84 }