diff --git a/apps/routerconsole/java/src/net/i2p/router/web/helpers/NetDbRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/helpers/NetDbRenderer.java
index 418c0cfce..799d53866 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/helpers/NetDbRenderer.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/helpers/NetDbRenderer.java
@@ -651,7 +651,7 @@ class NetDbRenderer {
.append(lease.getTunnelId().getTunnelId()).append(" ");
}
if (debug) {
- long exl = lease.getEndDate().getTime() - now;
+ long exl = lease.getEndTime() - now;
if (exl > 0)
buf.append("").append(_t("Expires in {0}", DataHelper.formatDuration2(exl))).append("");
else
diff --git a/core/java/src/net/i2p/client/impl/RequestLeaseSetMessageHandler.java b/core/java/src/net/i2p/client/impl/RequestLeaseSetMessageHandler.java
index 515f4a24f..546213211 100644
--- a/core/java/src/net/i2p/client/impl/RequestLeaseSetMessageHandler.java
+++ b/core/java/src/net/i2p/client/impl/RequestLeaseSetMessageHandler.java
@@ -158,7 +158,7 @@ class RequestLeaseSetMessageHandler extends HandlerImpl {
lease.setTunnelId(msg.getTunnelId(i));
}
lease.setGateway(msg.getRouter(i));
- lease.setEndDate(msg.getEndDate());
+ lease.setEndDate(msg.getEndDate().getTime());
//lease.setStartDate(msg.getStartDate());
leaseSet.addLease(lease);
}
diff --git a/core/java/src/net/i2p/client/impl/RequestVariableLeaseSetMessageHandler.java b/core/java/src/net/i2p/client/impl/RequestVariableLeaseSetMessageHandler.java
index 4f47d51c1..adeaccba1 100644
--- a/core/java/src/net/i2p/client/impl/RequestVariableLeaseSetMessageHandler.java
+++ b/core/java/src/net/i2p/client/impl/RequestVariableLeaseSetMessageHandler.java
@@ -71,7 +71,7 @@ class RequestVariableLeaseSetMessageHandler extends RequestLeaseSetMessageHandle
lease.setTunnelId(old.getTunnelId());
}
lease.setGateway(old.getGateway());
- lease.setEndDate(old.getEndDate());
+ lease.setEndDate(old.getEndTime());
} else {
lease = msg.getEndpoint(i);
}
diff --git a/core/java/src/net/i2p/data/Lease.java b/core/java/src/net/i2p/data/Lease.java
index f2e3cf1cb..44efe47e6 100644
--- a/core/java/src/net/i2p/data/Lease.java
+++ b/core/java/src/net/i2p/data/Lease.java
@@ -25,7 +25,7 @@ import net.i2p.util.Clock;
public class Lease extends DataStructureImpl {
protected Hash _gateway;
protected TunnelId _tunnelId;
- protected Date _end;
+ protected long _end;
public Lease() {
}
@@ -58,11 +58,32 @@ public class Lease extends DataStructureImpl {
_tunnelId = id;
}
+ /**
+ * @deprecated use getEndTime()
+ */
+ @Deprecated
public Date getEndDate() {
+ return new Date(_end);
+ }
+
+ /**
+ * @deprecated use setEndDate(long)
+ */
+ public void setEndDate(Date date) {
+ _end = date.getTime();
+ }
+
+ /**
+ * @since 0.9.48
+ */
+ public long getEndTime() {
return _end;
}
- public void setEndDate(Date date) {
+ /**
+ * @since 0.9.48
+ */
+ public void setEndDate(long date) {
_end = date;
}
@@ -107,8 +128,7 @@ public class Lease extends DataStructureImpl {
/** has this lease already expired (giving allowing up the fudgeFactor milliseconds for clock skew)? */
public boolean isExpired(long fudgeFactor) {
- if (_end == null) return true;
- return _end.getTime() < Clock.getInstance().now() - fudgeFactor;
+ return _end < Clock.getInstance().now() - fudgeFactor;
}
public void readBytes(InputStream in) throws DataFormatException, IOException {
@@ -117,7 +137,7 @@ public class Lease extends DataStructureImpl {
_gateway = Hash.create(in);
_tunnelId = new TunnelId();
_tunnelId.readBytes(in);
- _end = DataHelper.readDate(in);
+ _end = DataHelper.readLong(in, 8);
}
public void writeBytes(OutputStream out) throws DataFormatException, IOException {
@@ -126,7 +146,7 @@ public class Lease extends DataStructureImpl {
_gateway.writeBytes(out);
_tunnelId.writeBytes(out);
- DataHelper.writeDate(out, _end);
+ DataHelper.writeLong(out, 8, _end);
}
@Override
@@ -134,7 +154,7 @@ public class Lease extends DataStructureImpl {
if (object == this) return true;
if ((object == null) || !(object instanceof Lease)) return false;
Lease lse = (Lease) object;
- return DataHelper.eq(_end, lse.getEndDate())
+ return _end == lse.getEndTime()
&& DataHelper.eq(_tunnelId, lse.getTunnelId())
&& DataHelper.eq(_gateway, lse.getGateway());
@@ -142,15 +162,15 @@ public class Lease extends DataStructureImpl {
@Override
public int hashCode() {
- return DataHelper.hashCode(_end) + DataHelper.hashCode(_gateway)
- + DataHelper.hashCode(_tunnelId);
+ return (int) _end ^ DataHelper.hashCode(_gateway)
+ ^ DataHelper.hashCode(_tunnelId);
}
@Override
public String toString() {
StringBuilder buf = new StringBuilder(128);
buf.append("[Lease: ");
- buf.append("\n\tEnd Date: ").append(_end);
+ buf.append("\n\tEnd Date: ").append(DataHelper.formatTime(_end));
buf.append("\n\tGateway: ").append(_gateway);
buf.append("\n\tTunnelId: ").append(_tunnelId);
buf.append("]");
diff --git a/core/java/src/net/i2p/data/Lease2.java b/core/java/src/net/i2p/data/Lease2.java
index 902f97ebc..278f432ac 100644
--- a/core/java/src/net/i2p/data/Lease2.java
+++ b/core/java/src/net/i2p/data/Lease2.java
@@ -22,7 +22,7 @@ public class Lease2 extends Lease {
_gateway = Hash.create(in);
_tunnelId = new TunnelId();
_tunnelId.readBytes(in);
- _end = new Date(DataHelper.readLong(in, 4) * 1000);
+ _end = DataHelper.readLong(in, 4) * 1000;
}
@Override
@@ -31,7 +31,7 @@ public class Lease2 extends Lease {
throw new DataFormatException("Not enough data to write out a Lease");
_gateway.writeBytes(out);
_tunnelId.writeBytes(out);
- DataHelper.writeLong(out, 4, _end.getTime() / 1000);
+ DataHelper.writeLong(out, 4, _end / 1000);
}
@Override
@@ -39,14 +39,14 @@ public class Lease2 extends Lease {
if (object == this) return true;
if ((object == null) || !(object instanceof Lease2)) return false;
Lease2 lse = (Lease2) object;
- return DataHelper.eq(_end, lse.getEndDate())
+ return _end == lse.getEndTime()
&& DataHelper.eq(_tunnelId, lse.getTunnelId())
&& DataHelper.eq(_gateway, lse.getGateway());
}
@Override
public int hashCode() {
- return (int) _end.getTime() ^ DataHelper.hashCode(_gateway)
+ return (int) _end ^ DataHelper.hashCode(_gateway)
^ (int) _tunnelId.getTunnelId();
}
}
diff --git a/core/java/src/net/i2p/data/LeaseSet.java b/core/java/src/net/i2p/data/LeaseSet.java
index 2a612a8d6..856fe0d98 100644
--- a/core/java/src/net/i2p/data/LeaseSet.java
+++ b/core/java/src/net/i2p/data/LeaseSet.java
@@ -236,7 +236,7 @@ public class LeaseSet extends DatabaseEntry {
if (_leases.size() >= MAX_LEASES)
throw new IllegalArgumentException("Too many leases - max is " + MAX_LEASES);
_leases.add(lease);
- long expire = lease.getEndDate().getTime();
+ long expire = lease.getEndTime();
if (expire < _firstExpiration)
_firstExpiration = expire;
if (expire > _lastExpiration)
@@ -517,7 +517,7 @@ public class LeaseSet extends DatabaseEntry {
RandomSource.getInstance().nextBytes(enc, datalen, padlen);
// add the padded lease...
Lease padLease = new Lease();
- padLease.setEndDate(_leases.get(0).getEndDate());
+ padLease.setEndDate(_leases.get(0).getEndTime());
_leases.add(padLease);
// ...and replace all the gateways and tunnel ids
ByteArrayInputStream bais = new ByteArrayInputStream(enc);
@@ -567,7 +567,7 @@ public class LeaseSet extends DatabaseEntry {
TunnelId t = new TunnelId();
t.readBytes(bais);
l.setTunnelId(t);
- l.setEndDate(_leases.get(i).getEndDate());
+ l.setEndDate(_leases.get(i).getEndTime());
_decryptedLeases.add(l);
}
}
diff --git a/core/java/src/net/i2p/data/MetaLease.java b/core/java/src/net/i2p/data/MetaLease.java
index dad2a344c..ba1af4681 100644
--- a/core/java/src/net/i2p/data/MetaLease.java
+++ b/core/java/src/net/i2p/data/MetaLease.java
@@ -62,7 +62,7 @@ public class MetaLease extends Lease {
DataHelper.skip(in, 2);
_type = in.read();
_cost = in.read();
- _end = new Date(DataHelper.readLong(in, 4) * 1000);
+ _end = DataHelper.readLong(in, 4) * 1000;
}
@Override
@@ -74,7 +74,7 @@ public class MetaLease extends Lease {
DataHelper.writeLong(out, 2, 0);
out.write(_type);
out.write(_cost);
- DataHelper.writeLong(out, 4, _end.getTime() / 1000);
+ DataHelper.writeLong(out, 4, _end / 1000);
}
@Override
@@ -82,7 +82,7 @@ public class MetaLease extends Lease {
if (object == this) return true;
if ((object == null) || !(object instanceof MetaLease)) return false;
MetaLease lse = (MetaLease) object;
- return DataHelper.eq(_end, lse.getEndDate())
+ return _end == lse.getEndTime()
&& _type == lse._type
&& _cost == lse._cost
&& DataHelper.eq(_gateway, lse.getGateway());
@@ -90,7 +90,7 @@ public class MetaLease extends Lease {
@Override
public int hashCode() {
- return (int) _end.getTime() ^ DataHelper.hashCode(_gateway)
+ return (int) _end ^ DataHelper.hashCode(_gateway)
^ _cost;
}
@@ -98,7 +98,7 @@ public class MetaLease extends Lease {
public String toString() {
StringBuilder buf = new StringBuilder(128);
buf.append("[Meta Lease: ");
- buf.append("\n\tEnd Date: ").append(_end);
+ buf.append("\n\tEnd Date: ").append(DataHelper.formatTime(_end));
buf.append("\n\tTarget: ").append(_gateway);
buf.append("\n\tCost: ").append(_cost);
buf.append("\n\tType: ").append(_type);
diff --git a/router/java/src/net/i2p/router/client/RequestLeaseSetJob.java b/router/java/src/net/i2p/router/client/RequestLeaseSetJob.java
index 2667ab117..c3a9abadf 100644
--- a/router/java/src/net/i2p/router/client/RequestLeaseSetJob.java
+++ b/router/java/src/net/i2p/router/client/RequestLeaseSetJob.java
@@ -102,12 +102,12 @@ class RequestLeaseSetJob extends JobImpl {
rmsg.setSessionId(id);
for (int i = 0; i < requested.getLeaseCount(); i++) {
Lease lease = requested.getLease(i);
- if (lease.getEndDate().getTime() < endTime) {
+ if (lease.getEndTime() < endTime) {
// don't modify old object, we don't know where it came from
Lease nl = new Lease();
nl.setGateway(lease.getGateway());
nl.setTunnelId(lease.getTunnelId());
- nl.setEndDate(new Date(endTime));
+ nl.setEndDate(endTime);
lease = nl;
//if (_log.shouldLog(Log.INFO))
// _log.info("Adjusted end date to " + endTime + " for " + lease);
diff --git a/router/java/src/net/i2p/router/tunnel/pool/AliasedTunnelPool.java b/router/java/src/net/i2p/router/tunnel/pool/AliasedTunnelPool.java
index 1dc45eb61..1e2a1487b 100644
--- a/router/java/src/net/i2p/router/tunnel/pool/AliasedTunnelPool.java
+++ b/router/java/src/net/i2p/router/tunnel/pool/AliasedTunnelPool.java
@@ -123,7 +123,7 @@ public class AliasedTunnelPool extends TunnelPool {
for (int i = 0; i < ls.getLeaseCount(); i++) {
Lease old = ls.getLease(i);
Lease lease = new Lease();
- lease.setEndDate(old.getEndDate());
+ lease.setEndDate(old.getEndTime());
lease.setTunnelId(old.getTunnelId());
lease.setGateway(old.getGateway());
rv.addLease(lease);
diff --git a/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java b/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java
index 3839fa5c7..320c9c402 100644
--- a/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java
+++ b/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java
@@ -652,7 +652,13 @@ public class TunnelPool {
*/
private static class LeaseComparator implements Comparator, Serializable {
public int compare(Lease l, Lease r) {
- return r.getEndDate().compareTo(l.getEndDate());
+ long lt = l.getEndTime();
+ long rt = r.getEndTime();
+ if (rt > lt)
+ return 1;
+ if (rt < lt)
+ return -1;
+ return 0;
}
}
@@ -755,7 +761,7 @@ public class TunnelPool {
// Get the "real" expiration from the gateway hop config,
// HopConfig expirations are the same as the "real" expiration and don't change
// see configureNewTunnel()
- lease.setEndDate(new Date(((TunnelCreatorConfig)tunnel).getConfig(0).getExpiration()));
+ lease.setEndDate(((TunnelCreatorConfig)tunnel).getConfig(0).getExpiration());
lease.setTunnelId(inId);
lease.setGateway(gw);
leases.add(lease);