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 418c0cfceddd7fdbc50f285922988fc4804e77b5..799d53866d23dc7e8a856ba6b7b09e08458ee59d 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("</span></span> "); } if (debug) { - long exl = lease.getEndDate().getTime() - now; + long exl = lease.getEndTime() - now; if (exl > 0) buf.append("<b class=\"netdb_expiry\">").append(_t("Expires in {0}", DataHelper.formatDuration2(exl))).append("</b>"); else diff --git a/core/java/src/net/i2p/client/impl/RequestLeaseSetMessageHandler.java b/core/java/src/net/i2p/client/impl/RequestLeaseSetMessageHandler.java index 515f4a24f647323db2b4f482314d141cf7363cff..546213211b8705017471d8d5572e6fe0fb104577 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 4f47d51c1c05967002eea804bf42650c0bc3f900..adeaccba1f04a5eb369523dd2946ed31d2c676a8 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 f2e3cf1cb0f35d3f40421ec536ffbd70b1cdd96c..44efe47e6e546e369ffee4d7e783650ba12ca0b2 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 _end; + 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; + } + + /** + * @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 902f97ebc513fe6725ada9d30ef6861fcf316b95..278f432acf880a6d137b737f057f94d28adc83a0 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 2a612a8d6de8cbe79bf584f95ccbe5173e78763c..856fe0d989f7e238ce87ae4045529331cd96d363 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 dad2a344c74a2da61db67e8ca3dbfc039816060a..ba1af4681f447af945405195e035e16f64419111 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 2667ab1174fb6da52d50ec02ede290d48d52667f..c3a9abadf6aadf83a83328ae913a303bb544dbb7 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 1dc45eb613c32bb5035b90f39c7406b7841f43b6..1e2a1487bb2b6115d863067401b5638bb0c6b378 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 3839fa5c77ed2c7592a38807bb87190dcaebb602..320c9c40293f82f6cd4d8f80ae8ae2979e24b3e0 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<Lease>, 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);