All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.subgraph.orchid.data.exitpolicy.ExitPorts Maven / Gradle / Ivy

There is a newer version: 1.2.1
Show newest version
package com.subgraph.orchid.data.exitpolicy;

import java.util.ArrayList;
import java.util.List;


/**
 * Used by router status entries in consensus documents
 */
public class ExitPorts {
	public static ExitPorts createAcceptExitPorts(String ports) {
		final ExitPorts exitPorts = new ExitPorts(true);
		exitPorts.parsePortRanges(ports);
		return exitPorts;
	}
	
	public static ExitPorts createRejectExitPorts(String ports) {
		final ExitPorts exitPorts = new ExitPorts(false);
		exitPorts.parsePortRanges(ports);
		return exitPorts;
	}
	
	private final List ranges = new ArrayList();
	private final boolean areAcceptPorts;
	
	private ExitPorts(boolean acceptPorts) {
		this.areAcceptPorts = acceptPorts;
	}
	
	public boolean areAcceptPorts() {
		return areAcceptPorts;
	}
	
	public boolean acceptsPort(int port) {
		if(areAcceptPorts) 
			return contains(port);
		else
			return !contains(port);
	}
	public boolean contains(int port) {
		for(PortRange r: ranges) 
			if(r.rangeContains(port))
				return true;
		return false;
	}
	
	private void parsePortRanges(String portRanges) {
		final String[] args = portRanges.split(",");
		for(String arg: args)
			ranges.add(PortRange.createFromString(arg));
	}
	

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy