summaryrefslogtreecommitdiff
path: root/src/main/java/com/it_jaros/jscanner/PortRange.java
diff options
context:
space:
mode:
authorGravatar Matthias Jaros <jarlucmat@mailbox.org>2026-08-01 12:38:33 +0200
committerGravatar Matthias Jaros <jarlucmat@mailbox.org>2026-08-01 12:38:33 +0200
commitd475e58f5cc8838538b5d7189a58e88362d5e552 (patch)
tree5c11045456f4d0e5b108a458e8f2126c6d08b09c /src/main/java/com/it_jaros/jscanner/PortRange.java
parent4a51139f719df8a9a0a2f5640985c4c9b3cefd56 (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.java36
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