X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FTrustUpdater.java;h=4bbe299e1169d782dfdfb041fd98437304b7274f;hp=a86b353f6e955a3a5d5120c7337fa38d45fc182f;hb=dbb2029407ac7147325b7ef0be9c0e87511ed200;hpb=304cf43f37de2866339ddbdad25cbb04154d569c diff --git a/src/main/java/net/pterodactylus/sone/core/TrustUpdater.java b/src/main/java/net/pterodactylus/sone/core/TrustUpdater.java index a86b353..4bbe299 100644 --- a/src/main/java/net/pterodactylus/sone/core/TrustUpdater.java +++ b/src/main/java/net/pterodactylus/sone/core/TrustUpdater.java @@ -78,7 +78,15 @@ public class TrustUpdater extends AbstractService { * The identity receiving the trust */ public void getTrust(OwnIdentity truster, Identity trustee) { - updateJobs.add(new GetTrustJob(truster, trustee)); + GetTrustJob getTrustJob = new GetTrustJob(truster, trustee); + if (!updateJobs.contains(getTrustJob)) { + logger.log(Level.FINER, "Adding Trust Update Job: " + getTrustJob); + try { + updateJobs.put(getTrustJob); + } catch (InterruptedException ie1) { + /* the queue is unbounded so it should never block. */ + } + } } /** @@ -97,7 +105,16 @@ public class TrustUpdater extends AbstractService { * The comment of the trust relation */ public void setTrust(OwnIdentity truster, Identity trustee, Integer score, String comment) { - updateJobs.add(new SetTrustJob(truster, trustee, score, comment)); + SetTrustJob setTrustJob = new SetTrustJob(truster, trustee, score, comment); + if (updateJobs.contains(setTrustJob)) { + updateJobs.remove(setTrustJob); + } + logger.log(Level.FINER, "Adding Trust Update Job: " + setTrustJob); + try { + updateJobs.put(setTrustJob); + } catch (InterruptedException e) { + /* the queue is unbounded so it should never block. */ + } } // @@ -115,7 +132,11 @@ public class TrustUpdater extends AbstractService { if (shouldStop() || (updateJob == stopJob)) { break; } + logger.log(Level.FINE, "Running Trust Update Job: " + updateJob); + long startTime = System.currentTimeMillis(); updateJob.run(); + long endTime = System.currentTimeMillis(); + logger.log(Level.FINE, "Trust Update Job finished, took " + (endTime - startTime) + " ms."); } catch (InterruptedException ie1) { /* happens, ignore, loop. */ } @@ -173,6 +194,38 @@ public class TrustUpdater extends AbstractService { /* does nothing. */ } + // + // OBJECT METHODS + // + + /** + * {@inheritDoc} + */ + @Override + public boolean equals(Object object) { + if ((object == null) || !object.getClass().equals(getClass())) { + return false; + } + TrustUpdateJob updateJob = (TrustUpdateJob) object; + return ((truster == null) ? (updateJob.truster == null) : updateJob.truster.equals(truster)) && ((trustee == null) ? (updateJob.trustee == null) : updateJob.trustee.equals(trustee)); + } + + /** + * {@inheritDoc} + */ + @Override + public int hashCode() { + return ((truster == null) ? 0 : truster.hashCode()) ^ ((trustee == null) ? 0 : trustee.hashCode()); + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return String.format("%s[truster=%s,trustee=%s]", getClass().getSimpleName(), (truster == null) ? null : truster.getId(), (trustee == null) ? null : trustee.getId()); + } + } /**