1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 package org.apache.http.impl.conn;
28
29 import java.io.IOException;
30 import java.util.Date;
31 import java.util.concurrent.TimeUnit;
32
33 import org.apache.commons.logging.Log;
34 import org.apache.http.conn.OperatedClientConnection;
35 import org.apache.http.conn.routing.HttpRoute;
36 import org.apache.http.conn.routing.RouteTracker;
37 import org.apache.http.pool.PoolEntry;
38
39
40
41
42 class HttpPoolEntry extends PoolEntry<HttpRoute, OperatedClientConnection> {
43
44 private final Log log;
45 private final RouteTracker tracker;
46
47 public HttpPoolEntry(
48 final Log log,
49 final String id,
50 final HttpRoute route,
51 final OperatedClientConnection conn,
52 final long timeToLive, final TimeUnit tunit) {
53 super(id, route, conn, timeToLive, tunit);
54 this.log = log;
55 this.tracker = new RouteTracker(route);
56 }
57
58 @Override
59 public boolean isExpired(long now) {
60 boolean expired = super.isExpired(now);
61 if (expired && this.log.isDebugEnabled()) {
62 this.log.debug("Connection " + this + " expired @ " + new Date(getExpiry()));
63 }
64 return expired;
65 }
66
67 RouteTracker getTracker() {
68 return this.tracker;
69 }
70
71 HttpRoute getPlannedRoute() {
72 return getRoute();
73 }
74
75 HttpRoute getEffectiveRoute() {
76 return this.tracker.toRoute();
77 }
78
79 @Override
80 public boolean isClosed() {
81 OperatedClientConnection conn = getConnection();
82 return !conn.isOpen();
83 }
84
85 @Override
86 public void close() {
87 OperatedClientConnection conn = getConnection();
88 try {
89 conn.close();
90 } catch (IOException ex) {
91 this.log.debug("I/O error closing connection", ex);
92 }
93 }
94
95 }