-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathNetworkPortManager.java
More file actions
31 lines (24 loc) · 1.05 KB
/
NetworkPortManager.java
File metadata and controls
31 lines (24 loc) · 1.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package core;
import utils.Logger;
import java.util.concurrent.Semaphore;
// Manages limited network ports using a fair semaphore.
public class NetworkPortManager {
private static final int TOTAL_PORTS = 2;
private final Semaphore networkPorts = new Semaphore(TOTAL_PORTS, true);
public void acquirePort(String vmName) throws InterruptedException {
Logger.log(vmName,
"Requesting Network Port... (available: " + networkPorts.availablePermits() + "/" + TOTAL_PORTS + ")",
Logger.YELLOW);
networkPorts.acquire();
int inUse = TOTAL_PORTS - networkPorts.availablePermits();
Logger.log(vmName,
"Network Port GRANTED. (in use: " + inUse + "/" + TOTAL_PORTS + ") Transmitting data...",
Logger.GREEN);
}
public void releasePort(String vmName) {
networkPorts.release();
Logger.log(vmName,
"Network Port RELEASED. (available: " + networkPorts.availablePermits() + "/" + TOTAL_PORTS + ")",
Logger.CYAN);
}
}