DS-Lab / src / main / java / dslab / monitoring / MonitoringServiceImpl.java
MonitoringServiceImpl.java
Raw
package dslab.monitoring;

import dslab.routing.Address;

import java.net.InetSocketAddress;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import static java.util.stream.Collectors.counting;
import static java.util.stream.Collectors.groupingBy;

/**
 * Implements the requirements for monitoring servers as specified in assignment 1, sec. 2.6
 */
public class MonitoringServiceImpl {

    private final List<MonitoringReport> reports = new ArrayList<>();

    public void save(MonitoringReport report) {
        reports.add(report);
    }

    public Map<Address, Long> addresses() {
        return reports.stream().collect(groupingBy(r -> r.getRecipient(), counting()));
    }

    public Map<InetSocketAddress, Long> servers() {
        return reports.stream().collect(groupingBy(r -> r.getServer(), counting()));
    }
}