From 13df22f69add50653f87737f74dbef349012dba3 Mon Sep 17 00:00:00 2001 From: akwizgran <michael@briarproject.org> Date: Fri, 14 Dec 2012 22:11:29 +0000 Subject: [PATCH] Better hashCode methods. --- briar-api/src/net/sf/briar/api/protocol/Transport.java | 10 +++++----- briar-core/src/net/sf/briar/plugins/PollerImpl.java | 4 +++- briar-core/src/net/sf/briar/plugins/modem/Frame.java | 3 ++- .../src/net/sf/briar/transport/KeyManagerImpl.java | 2 +- .../briar/transport/TransportConnectionRecogniser.java | 2 +- 5 files changed, 12 insertions(+), 9 deletions(-) diff --git a/briar-api/src/net/sf/briar/api/protocol/Transport.java b/briar-api/src/net/sf/briar/api/protocol/Transport.java index 4ac071160b..a8ea4a3151 100644 --- a/briar-api/src/net/sf/briar/api/protocol/Transport.java +++ b/briar-api/src/net/sf/briar/api/protocol/Transport.java @@ -26,6 +26,11 @@ public class Transport { return properties; } + @Override + public int hashCode() { + return id.hashCode() ^ properties.hashCode(); + } + @Override public boolean equals(Object o) { if(o instanceof Transport) { @@ -34,9 +39,4 @@ public class Transport { } return false; } - - @Override - public int hashCode() { - return id.hashCode(); - } } diff --git a/briar-core/src/net/sf/briar/plugins/PollerImpl.java b/briar-core/src/net/sf/briar/plugins/PollerImpl.java index 3448070de9..29ea3c9132 100644 --- a/briar-core/src/net/sf/briar/plugins/PollerImpl.java +++ b/briar-core/src/net/sf/briar/plugins/PollerImpl.java @@ -96,15 +96,17 @@ class PollerImpl implements Poller, Runnable { this.plugin = plugin; } + // Must be consistent with equals() public int compareTo(PollTime p) { if(time < p.time) return -1; if(time > p.time) return 1; return 0; } + // Must be consistent with equals() @Override public int hashCode() { - return (int) time; + return (int) (time ^ (time >>> 32)) ^ plugin.hashCode(); } @Override diff --git a/briar-core/src/net/sf/briar/plugins/modem/Frame.java b/briar-core/src/net/sf/briar/plugins/modem/Frame.java index fc80bd6b88..288c606844 100644 --- a/briar-core/src/net/sf/briar/plugins/modem/Frame.java +++ b/briar-core/src/net/sf/briar/plugins/modem/Frame.java @@ -42,7 +42,8 @@ abstract class Frame { @Override public int hashCode() { - return (int) getSequenceNumber(); + long sequenceNumber = getSequenceNumber(); + return buf[0] ^ (int) (sequenceNumber ^ (sequenceNumber >>> 32)); } @Override diff --git a/briar-core/src/net/sf/briar/transport/KeyManagerImpl.java b/briar-core/src/net/sf/briar/transport/KeyManagerImpl.java index 5117562d4c..39136daf31 100644 --- a/briar-core/src/net/sf/briar/transport/KeyManagerImpl.java +++ b/briar-core/src/net/sf/briar/transport/KeyManagerImpl.java @@ -352,7 +352,7 @@ class KeyManagerImpl extends TimerTask implements KeyManager, DatabaseListener { @Override public int hashCode() { - return contactId.hashCode() + transportId.hashCode(); + return contactId.hashCode() ^ transportId.hashCode(); } @Override diff --git a/briar-core/src/net/sf/briar/transport/TransportConnectionRecogniser.java b/briar-core/src/net/sf/briar/transport/TransportConnectionRecogniser.java index 079f9e09e1..dfada60a59 100644 --- a/briar-core/src/net/sf/briar/transport/TransportConnectionRecogniser.java +++ b/briar-core/src/net/sf/briar/transport/TransportConnectionRecogniser.java @@ -164,7 +164,7 @@ class TransportConnectionRecogniser { @Override public int hashCode() { - return contactId.hashCode() + (int) period; + return contactId.hashCode() ^ (int) (period ^ (period >>> 32)); } @Override -- GitLab