diff options
Diffstat (limited to 'src/main/java/com/it_jaros/jscanner/ProgressBar.java')
| -rw-r--r-- | src/main/java/com/it_jaros/jscanner/ProgressBar.java | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/main/java/com/it_jaros/jscanner/ProgressBar.java b/src/main/java/com/it_jaros/jscanner/ProgressBar.java index 03c8ddc..ad953a3 100644 --- a/src/main/java/com/it_jaros/jscanner/ProgressBar.java +++ b/src/main/java/com/it_jaros/jscanner/ProgressBar.java @@ -141,14 +141,31 @@ public class ProgressBar { } private void printStats() { + long duration = scan.getDurationMillis(); + String durationStr = formatDuration(duration); + System.out.println("\n--------------------"); System.out.println("Stats:"); System.out.println("Total hosts scanned: " + scan.getHostTotalCounter().max()); + System.out.println("Duration: " + durationStr); System.out.println("Peak concurrent connects: " + scan.getSocketCounter().max()); System.out.println("Peak concurrent threads: " + scan.getThreadCounter().max()); System.out.println("--------------------\n"); } + private static String formatDuration(long millis) { + if (millis < 0) return ""; + long seconds = millis / 1000 % 60; + long minutes = millis / 60000 % 60; + long hours = millis / 3600000 % 24; + long days = millis / 86400000; + + if (days > 0) return String.format("%dd %dh:%dm:%ds", days, hours, minutes, seconds); + if (hours > 0) return String.format("%dh:%dm:%ds", hours, minutes, seconds); + if (minutes > 0) return String.format("%dm:%ds", minutes, seconds); + return String.format("%ds", seconds); + } + private void printStatusLine(final Scan scan) { this.printStatusLine(scan.getHostCounter(), scan.getHostTotalCounter(), scan.getSocketCounter(), scan.getThreadCounter()); } @@ -157,15 +174,17 @@ public class ProgressBar { Counter hostCounter, Counter hostTotalCounter, Counter socketCounter, Counter threadCounter) { + long duration = scan.getDurationMillis(); int total = hostTotalCounter.current(); int running = hostCounter.current(); int done = total - running; long percent = total == 0 ? 100 : done * 100L / total; String line = String.format( - "hosts: %d running, %d done | sockets: %d active, %d peak | workers: %d active, %d peak", + "hosts: %d running, %d done | %s | sockets: %d active, %d peak | workers: %d active, %d peak", running, done, + formatDuration(duration), socketCounter.current(), socketCounter.max(), threadCounter.current(), |
