/******************************************************************************************************************* * * * ******************************************************************************************************************/ void onFingerprintComputed (final @ListensTo @Nonnull FingerprintComputedMessage message) { log.debug("onFingerprintComputed({})", message); map.put(indexFor(message.getPath()), message.getFingerprint()); requestFlush(); }
@Nonnull public static FingerprintComputedMessage forPath (final @Nonnull Path path) { return new FingerprintComputedMessage(path, new Fingerprint("", "")); } }
/******************************************************************************************************************* * * Updates the statistics for a new fingerprint computed. * ******************************************************************************************************************/ void onFingerprintComputed (final @ListensTo @Nonnull FingerprintComputedMessage message) { log.trace("onFingerprintComputed({})", message); processedFileCount++; processedDataSize += message.getPath().toFile().length(); final Collaboration collaboration = message.getCollaboration(); final long elapsedTime = collaboration.getDuration().getMillis(); final double speed = (processedDataSize / M10) / (elapsedTime / K10); final int eta = 1000 * (int)(((totalDataSize - processedDataSize) / M10) / speed); fields.setProcessed(String.format("%.1f MB in %d files", processedDataSize / M10, processedFileCount)); fields.setTotal(String.format("%.1f MB in %d files", totalDataSize / M10, totalFileCount)); fields.setElapsedTime(periodFormatter.print(new Duration(truncatedToSecond(elapsedTime)).toPeriod())); fields.setRemainingTime(periodFormatter.print(new Duration(truncatedToSecond(eta)).toPeriod())); fields.setSpeed(String.format("%.1f MB/s", speed)); fields.setPending(Integer.toString(collaboration.getDeliveringMessagesCount())); fields.setRunning(Integer.toString(collaboration.getRunningThreadsCount())); fields.setProgress(processedDataSize / (float)totalDataSize); fields.setProgressLabel(String.format("%.1f %%", 100 * fields.getProgress())); }