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.nio.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.routing.HttpRoute;
35 import org.apache.http.conn.routing.RouteTracker;
36 import org.apache.http.nio.conn.ClientAsyncConnection;
37 import org.apache.http.nio.reactor.IOEventDispatch;
38 import org.apache.http.nio.reactor.IOSession;
39 import org.apache.http.pool.PoolEntry;
40
41 @Deprecated
42 class HttpPoolEntry extends PoolEntry<HttpRoute, IOSession> {
43
44 private final Log log;
45 private final RouteTracker tracker;
46
47 HttpPoolEntry(final Log log, final String id, final HttpRoute route, final IOSession session,
48 final long timeToLive, final TimeUnit timeUnit) {
49 super(id, route, session, timeToLive, timeUnit);
50 this.log = log;
51 this.tracker = new RouteTracker(route);
52 }
53
54 @Override
55 public boolean isExpired(final long now) {
56 final boolean expired = super.isExpired(now);
57 if (expired && this.log.isDebugEnabled()) {
58 this.log.debug("Connection " + this + " expired @ " + new Date(getExpiry()));
59 }
60 return expired;
61 }
62
63 public ClientAsyncConnection getOperatedClientConnection() {
64 final IOSession session = getConnection();
65 return (ClientAsyncConnection) session.getAttribute(IOEventDispatch.CONNECTION_KEY);
66 }
67
68 @Override
69 public void close() {
70 try {
71 getOperatedClientConnection().shutdown();
72 } catch (final IOException ex) {
73 if (this.log.isDebugEnabled()) {
74 this.log.debug("I/O error shutting down connection", ex);
75 }
76 }
77 }
78
79 @Override
80 public boolean isClosed() {
81 final IOSession session = getConnection();
82 return session.isClosed();
83 }
84
85 HttpRoute getPlannedRoute() {
86 return super.getRoute();
87 }
88
89 RouteTracker getTracker() {
90 return this.tracker;
91 }
92
93 HttpRoute getEffectiveRoute() {
94 return this.tracker.toRoute();
95 }
96
97 }