Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Node {
- private Node parentNode;
- private IPAddress ownAddress;
- private IPAddress rangeStart;
- private IPAddress rangeEnd;
- private ArrayList<Node> children;
- public Node(IPAddress ownAddress, IPAddress rangeStart, IPAddress rangeEnd ) {
- // this.parentNode = null;
- this.ownAddress = ownAddress;
- this.rangeStart = rangeStart;
- this.rangeEnd = rangeEnd;
- this.children = new ArrayList<>();
- }
- public Node(Node parentNode, IPAddress ownAddress, IPAddress rangeStart, IPAddress rangeEnd ) {
- this.parentNode = parentNode;
- this.ownAddress = ownAddress;
- this.rangeStart = rangeStart;
- this.rangeEnd = rangeEnd;
- this.children = new ArrayList<>();
- this.parentNode.children.add(this);
- }
- public String tracePacket(Packet packet){
- packet.recordPath(ownAddress);
- if (packet.getDestination().isTheSame(ownAddress)) {
- return packet.toString();
- }else if (!packet.isLive()) {
- getResponsibleChild(packet.getDestination());
- }
- Node childToSend = getResponsibleChild(packet.getDestination());
- if (childToSend != null) {
- return childToSend.tracePacket(packet);
- }
- if (parentNode == null) {
- return "OUT";
- }else return parentNode.tracePacket(packet);
- }
- private Node getResponsibleChild(IPAddress address){
- for (Node child : children) {
- if (address.insideRng(child.rangeStart, child.rangeEnd)) {
- return child.tracePacket(packet);
- }
- }
- return null;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement