forked from I2P_Developers/i2p.i2p
Lease: Store time as long rather than Date to save space
Add long methods, deprecate Date methods
This commit is contained in:
@ -651,7 +651,7 @@ class NetDbRenderer {
|
|||||||
.append(lease.getTunnelId().getTunnelId()).append("</span></span> ");
|
.append(lease.getTunnelId().getTunnelId()).append("</span></span> ");
|
||||||
}
|
}
|
||||||
if (debug) {
|
if (debug) {
|
||||||
long exl = lease.getEndDate().getTime() - now;
|
long exl = lease.getEndTime() - now;
|
||||||
if (exl > 0)
|
if (exl > 0)
|
||||||
buf.append("<b class=\"netdb_expiry\">").append(_t("Expires in {0}", DataHelper.formatDuration2(exl))).append("</b>");
|
buf.append("<b class=\"netdb_expiry\">").append(_t("Expires in {0}", DataHelper.formatDuration2(exl))).append("</b>");
|
||||||
else
|
else
|
||||||
|
@ -158,7 +158,7 @@ class RequestLeaseSetMessageHandler extends HandlerImpl {
|
|||||||
lease.setTunnelId(msg.getTunnelId(i));
|
lease.setTunnelId(msg.getTunnelId(i));
|
||||||
}
|
}
|
||||||
lease.setGateway(msg.getRouter(i));
|
lease.setGateway(msg.getRouter(i));
|
||||||
lease.setEndDate(msg.getEndDate());
|
lease.setEndDate(msg.getEndDate().getTime());
|
||||||
//lease.setStartDate(msg.getStartDate());
|
//lease.setStartDate(msg.getStartDate());
|
||||||
leaseSet.addLease(lease);
|
leaseSet.addLease(lease);
|
||||||
}
|
}
|
||||||
|
@ -71,7 +71,7 @@ class RequestVariableLeaseSetMessageHandler extends RequestLeaseSetMessageHandle
|
|||||||
lease.setTunnelId(old.getTunnelId());
|
lease.setTunnelId(old.getTunnelId());
|
||||||
}
|
}
|
||||||
lease.setGateway(old.getGateway());
|
lease.setGateway(old.getGateway());
|
||||||
lease.setEndDate(old.getEndDate());
|
lease.setEndDate(old.getEndTime());
|
||||||
} else {
|
} else {
|
||||||
lease = msg.getEndpoint(i);
|
lease = msg.getEndpoint(i);
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ import net.i2p.util.Clock;
|
|||||||
public class Lease extends DataStructureImpl {
|
public class Lease extends DataStructureImpl {
|
||||||
protected Hash _gateway;
|
protected Hash _gateway;
|
||||||
protected TunnelId _tunnelId;
|
protected TunnelId _tunnelId;
|
||||||
protected Date _end;
|
protected long _end;
|
||||||
|
|
||||||
public Lease() {
|
public Lease() {
|
||||||
}
|
}
|
||||||
@ -58,11 +58,32 @@ public class Lease extends DataStructureImpl {
|
|||||||
_tunnelId = id;
|
_tunnelId = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated use getEndTime()
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
public Date getEndDate() {
|
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;
|
return _end;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setEndDate(Date date) {
|
/**
|
||||||
|
* @since 0.9.48
|
||||||
|
*/
|
||||||
|
public void setEndDate(long date) {
|
||||||
_end = 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)? */
|
/** has this lease already expired (giving allowing up the fudgeFactor milliseconds for clock skew)? */
|
||||||
public boolean isExpired(long fudgeFactor) {
|
public boolean isExpired(long fudgeFactor) {
|
||||||
if (_end == null) return true;
|
return _end < Clock.getInstance().now() - fudgeFactor;
|
||||||
return _end.getTime() < Clock.getInstance().now() - fudgeFactor;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void readBytes(InputStream in) throws DataFormatException, IOException {
|
public void readBytes(InputStream in) throws DataFormatException, IOException {
|
||||||
@ -117,7 +137,7 @@ public class Lease extends DataStructureImpl {
|
|||||||
_gateway = Hash.create(in);
|
_gateway = Hash.create(in);
|
||||||
_tunnelId = new TunnelId();
|
_tunnelId = new TunnelId();
|
||||||
_tunnelId.readBytes(in);
|
_tunnelId.readBytes(in);
|
||||||
_end = DataHelper.readDate(in);
|
_end = DataHelper.readLong(in, 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void writeBytes(OutputStream out) throws DataFormatException, IOException {
|
public void writeBytes(OutputStream out) throws DataFormatException, IOException {
|
||||||
@ -126,7 +146,7 @@ public class Lease extends DataStructureImpl {
|
|||||||
|
|
||||||
_gateway.writeBytes(out);
|
_gateway.writeBytes(out);
|
||||||
_tunnelId.writeBytes(out);
|
_tunnelId.writeBytes(out);
|
||||||
DataHelper.writeDate(out, _end);
|
DataHelper.writeLong(out, 8, _end);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -134,7 +154,7 @@ public class Lease extends DataStructureImpl {
|
|||||||
if (object == this) return true;
|
if (object == this) return true;
|
||||||
if ((object == null) || !(object instanceof Lease)) return false;
|
if ((object == null) || !(object instanceof Lease)) return false;
|
||||||
Lease lse = (Lease) object;
|
Lease lse = (Lease) object;
|
||||||
return DataHelper.eq(_end, lse.getEndDate())
|
return _end == lse.getEndTime()
|
||||||
&& DataHelper.eq(_tunnelId, lse.getTunnelId())
|
&& DataHelper.eq(_tunnelId, lse.getTunnelId())
|
||||||
&& DataHelper.eq(_gateway, lse.getGateway());
|
&& DataHelper.eq(_gateway, lse.getGateway());
|
||||||
|
|
||||||
@ -142,15 +162,15 @@ public class Lease extends DataStructureImpl {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return DataHelper.hashCode(_end) + DataHelper.hashCode(_gateway)
|
return (int) _end ^ DataHelper.hashCode(_gateway)
|
||||||
+ DataHelper.hashCode(_tunnelId);
|
^ DataHelper.hashCode(_tunnelId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
StringBuilder buf = new StringBuilder(128);
|
StringBuilder buf = new StringBuilder(128);
|
||||||
buf.append("[Lease: ");
|
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\tGateway: ").append(_gateway);
|
||||||
buf.append("\n\tTunnelId: ").append(_tunnelId);
|
buf.append("\n\tTunnelId: ").append(_tunnelId);
|
||||||
buf.append("]");
|
buf.append("]");
|
||||||
|
@ -22,7 +22,7 @@ public class Lease2 extends Lease {
|
|||||||
_gateway = Hash.create(in);
|
_gateway = Hash.create(in);
|
||||||
_tunnelId = new TunnelId();
|
_tunnelId = new TunnelId();
|
||||||
_tunnelId.readBytes(in);
|
_tunnelId.readBytes(in);
|
||||||
_end = new Date(DataHelper.readLong(in, 4) * 1000);
|
_end = DataHelper.readLong(in, 4) * 1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -31,7 +31,7 @@ public class Lease2 extends Lease {
|
|||||||
throw new DataFormatException("Not enough data to write out a Lease");
|
throw new DataFormatException("Not enough data to write out a Lease");
|
||||||
_gateway.writeBytes(out);
|
_gateway.writeBytes(out);
|
||||||
_tunnelId.writeBytes(out);
|
_tunnelId.writeBytes(out);
|
||||||
DataHelper.writeLong(out, 4, _end.getTime() / 1000);
|
DataHelper.writeLong(out, 4, _end / 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -39,14 +39,14 @@ public class Lease2 extends Lease {
|
|||||||
if (object == this) return true;
|
if (object == this) return true;
|
||||||
if ((object == null) || !(object instanceof Lease2)) return false;
|
if ((object == null) || !(object instanceof Lease2)) return false;
|
||||||
Lease2 lse = (Lease2) object;
|
Lease2 lse = (Lease2) object;
|
||||||
return DataHelper.eq(_end, lse.getEndDate())
|
return _end == lse.getEndTime()
|
||||||
&& DataHelper.eq(_tunnelId, lse.getTunnelId())
|
&& DataHelper.eq(_tunnelId, lse.getTunnelId())
|
||||||
&& DataHelper.eq(_gateway, lse.getGateway());
|
&& DataHelper.eq(_gateway, lse.getGateway());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return (int) _end.getTime() ^ DataHelper.hashCode(_gateway)
|
return (int) _end ^ DataHelper.hashCode(_gateway)
|
||||||
^ (int) _tunnelId.getTunnelId();
|
^ (int) _tunnelId.getTunnelId();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -236,7 +236,7 @@ public class LeaseSet extends DatabaseEntry {
|
|||||||
if (_leases.size() >= MAX_LEASES)
|
if (_leases.size() >= MAX_LEASES)
|
||||||
throw new IllegalArgumentException("Too many leases - max is " + MAX_LEASES);
|
throw new IllegalArgumentException("Too many leases - max is " + MAX_LEASES);
|
||||||
_leases.add(lease);
|
_leases.add(lease);
|
||||||
long expire = lease.getEndDate().getTime();
|
long expire = lease.getEndTime();
|
||||||
if (expire < _firstExpiration)
|
if (expire < _firstExpiration)
|
||||||
_firstExpiration = expire;
|
_firstExpiration = expire;
|
||||||
if (expire > _lastExpiration)
|
if (expire > _lastExpiration)
|
||||||
@ -517,7 +517,7 @@ public class LeaseSet extends DatabaseEntry {
|
|||||||
RandomSource.getInstance().nextBytes(enc, datalen, padlen);
|
RandomSource.getInstance().nextBytes(enc, datalen, padlen);
|
||||||
// add the padded lease...
|
// add the padded lease...
|
||||||
Lease padLease = new Lease();
|
Lease padLease = new Lease();
|
||||||
padLease.setEndDate(_leases.get(0).getEndDate());
|
padLease.setEndDate(_leases.get(0).getEndTime());
|
||||||
_leases.add(padLease);
|
_leases.add(padLease);
|
||||||
// ...and replace all the gateways and tunnel ids
|
// ...and replace all the gateways and tunnel ids
|
||||||
ByteArrayInputStream bais = new ByteArrayInputStream(enc);
|
ByteArrayInputStream bais = new ByteArrayInputStream(enc);
|
||||||
@ -567,7 +567,7 @@ public class LeaseSet extends DatabaseEntry {
|
|||||||
TunnelId t = new TunnelId();
|
TunnelId t = new TunnelId();
|
||||||
t.readBytes(bais);
|
t.readBytes(bais);
|
||||||
l.setTunnelId(t);
|
l.setTunnelId(t);
|
||||||
l.setEndDate(_leases.get(i).getEndDate());
|
l.setEndDate(_leases.get(i).getEndTime());
|
||||||
_decryptedLeases.add(l);
|
_decryptedLeases.add(l);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -62,7 +62,7 @@ public class MetaLease extends Lease {
|
|||||||
DataHelper.skip(in, 2);
|
DataHelper.skip(in, 2);
|
||||||
_type = in.read();
|
_type = in.read();
|
||||||
_cost = in.read();
|
_cost = in.read();
|
||||||
_end = new Date(DataHelper.readLong(in, 4) * 1000);
|
_end = DataHelper.readLong(in, 4) * 1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -74,7 +74,7 @@ public class MetaLease extends Lease {
|
|||||||
DataHelper.writeLong(out, 2, 0);
|
DataHelper.writeLong(out, 2, 0);
|
||||||
out.write(_type);
|
out.write(_type);
|
||||||
out.write(_cost);
|
out.write(_cost);
|
||||||
DataHelper.writeLong(out, 4, _end.getTime() / 1000);
|
DataHelper.writeLong(out, 4, _end / 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -82,7 +82,7 @@ public class MetaLease extends Lease {
|
|||||||
if (object == this) return true;
|
if (object == this) return true;
|
||||||
if ((object == null) || !(object instanceof MetaLease)) return false;
|
if ((object == null) || !(object instanceof MetaLease)) return false;
|
||||||
MetaLease lse = (MetaLease) object;
|
MetaLease lse = (MetaLease) object;
|
||||||
return DataHelper.eq(_end, lse.getEndDate())
|
return _end == lse.getEndTime()
|
||||||
&& _type == lse._type
|
&& _type == lse._type
|
||||||
&& _cost == lse._cost
|
&& _cost == lse._cost
|
||||||
&& DataHelper.eq(_gateway, lse.getGateway());
|
&& DataHelper.eq(_gateway, lse.getGateway());
|
||||||
@ -90,7 +90,7 @@ public class MetaLease extends Lease {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return (int) _end.getTime() ^ DataHelper.hashCode(_gateway)
|
return (int) _end ^ DataHelper.hashCode(_gateway)
|
||||||
^ _cost;
|
^ _cost;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -98,7 +98,7 @@ public class MetaLease extends Lease {
|
|||||||
public String toString() {
|
public String toString() {
|
||||||
StringBuilder buf = new StringBuilder(128);
|
StringBuilder buf = new StringBuilder(128);
|
||||||
buf.append("[Meta Lease: ");
|
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\tTarget: ").append(_gateway);
|
||||||
buf.append("\n\tCost: ").append(_cost);
|
buf.append("\n\tCost: ").append(_cost);
|
||||||
buf.append("\n\tType: ").append(_type);
|
buf.append("\n\tType: ").append(_type);
|
||||||
|
@ -102,12 +102,12 @@ class RequestLeaseSetJob extends JobImpl {
|
|||||||
rmsg.setSessionId(id);
|
rmsg.setSessionId(id);
|
||||||
for (int i = 0; i < requested.getLeaseCount(); i++) {
|
for (int i = 0; i < requested.getLeaseCount(); i++) {
|
||||||
Lease lease = requested.getLease(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
|
// don't modify old object, we don't know where it came from
|
||||||
Lease nl = new Lease();
|
Lease nl = new Lease();
|
||||||
nl.setGateway(lease.getGateway());
|
nl.setGateway(lease.getGateway());
|
||||||
nl.setTunnelId(lease.getTunnelId());
|
nl.setTunnelId(lease.getTunnelId());
|
||||||
nl.setEndDate(new Date(endTime));
|
nl.setEndDate(endTime);
|
||||||
lease = nl;
|
lease = nl;
|
||||||
//if (_log.shouldLog(Log.INFO))
|
//if (_log.shouldLog(Log.INFO))
|
||||||
// _log.info("Adjusted end date to " + endTime + " for " + lease);
|
// _log.info("Adjusted end date to " + endTime + " for " + lease);
|
||||||
|
@ -123,7 +123,7 @@ public class AliasedTunnelPool extends TunnelPool {
|
|||||||
for (int i = 0; i < ls.getLeaseCount(); i++) {
|
for (int i = 0; i < ls.getLeaseCount(); i++) {
|
||||||
Lease old = ls.getLease(i);
|
Lease old = ls.getLease(i);
|
||||||
Lease lease = new Lease();
|
Lease lease = new Lease();
|
||||||
lease.setEndDate(old.getEndDate());
|
lease.setEndDate(old.getEndTime());
|
||||||
lease.setTunnelId(old.getTunnelId());
|
lease.setTunnelId(old.getTunnelId());
|
||||||
lease.setGateway(old.getGateway());
|
lease.setGateway(old.getGateway());
|
||||||
rv.addLease(lease);
|
rv.addLease(lease);
|
||||||
|
@ -652,7 +652,13 @@ public class TunnelPool {
|
|||||||
*/
|
*/
|
||||||
private static class LeaseComparator implements Comparator<Lease>, Serializable {
|
private static class LeaseComparator implements Comparator<Lease>, Serializable {
|
||||||
public int compare(Lease l, Lease r) {
|
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,
|
// Get the "real" expiration from the gateway hop config,
|
||||||
// HopConfig expirations are the same as the "real" expiration and don't change
|
// HopConfig expirations are the same as the "real" expiration and don't change
|
||||||
// see configureNewTunnel()
|
// see configureNewTunnel()
|
||||||
lease.setEndDate(new Date(((TunnelCreatorConfig)tunnel).getConfig(0).getExpiration()));
|
lease.setEndDate(((TunnelCreatorConfig)tunnel).getConfig(0).getExpiration());
|
||||||
lease.setTunnelId(inId);
|
lease.setTunnelId(inId);
|
||||||
lease.setGateway(gw);
|
lease.setGateway(gw);
|
||||||
leases.add(lease);
|
leases.add(lease);
|
||||||
|
Reference in New Issue
Block a user