diff options
| author | 2026-08-01 12:38:33 +0200 | |
|---|---|---|
| committer | 2026-08-01 12:38:33 +0200 | |
| commit | d475e58f5cc8838538b5d7189a58e88362d5e552 (patch) | |
| tree | 5c11045456f4d0e5b108a458e8f2126c6d08b09c /src/main/java/com/it_jaros/jscanner/PortRange.java | |
| parent | 4a51139f719df8a9a0a2f5640985c4c9b3cefd56 (diff) | |
Split Iterator from PortRange into seperate mutable class. so Portrange
is a clean Object that is immutable and can create as many iterators as
it wants without breaking.
Diffstat (limited to 'src/main/java/com/it_jaros/jscanner/PortRange.java')
| -rw-r--r-- | src/main/java/com/it_jaros/jscanner/PortRange.java | 36 |
1 files changed, 3 insertions, 33 deletions
diff --git a/src/main/java/com/it_jaros/jscanner/PortRange.java b/src/main/java/com/it_jaros/jscanner/PortRange.java index 9e66371..3a735c5 100644 --- a/src/main/java/com/it_jaros/jscanner/PortRange.java +++ b/src/main/java/com/it_jaros/jscanner/PortRange.java @@ -2,17 +2,12 @@ package com.it_jaros.jscanner; import java.util.BitSet; import java.util.Iterator; -import java.util.NoSuchElementException; -public class PortRange implements Iterator<Integer> { +public class PortRange { public static final int MIN_PORT = 1; public static final int MAX_PORT = 65535; private final BitSet specifiedPorts = new BitSet(MAX_PORT); - private final BitSet availablePorts = new BitSet(MAX_PORT); - - private int currentPortCursor; - private int done = 0; public PortRange(String ports) { if (ports == null || "".equals(ports)) { @@ -22,9 +17,6 @@ public class PortRange implements Iterator<Integer> { } else { parsePortRange(ports); } - - availablePorts.or(specifiedPorts); - currentPortCursor = availablePorts.nextSetBit(MIN_PORT); } /** @@ -80,29 +72,7 @@ public class PortRange implements Iterator<Integer> { } } - @Override - public Integer next() { - int p = availablePorts.nextSetBit(currentPortCursor); - if (p > 0) { - availablePorts.clear(p); - currentPortCursor = p + 1; - done++; - return p; - } - - throw new NoSuchElementException("Reached end of port range"); - } - - @Override - public boolean hasNext() { - return availablePorts.nextSetBit(currentPortCursor) > 0; - } - - public int getTotal() { - return specifiedPorts.cardinality(); - } - - public int getDone() { - return done; + public Iterator<Integer> iterator() { + return new PortRangeIterator(specifiedPorts); } }
\ No newline at end of file |
