tree 6aa22b87b9ebdd0fd73fafd6d5241680250709a0
parent 2750b41d0b50eb66c8aada11d62666f934ca950d
author Erik Kline <ek@google.com> 1454476343 +0900
committer Erik Kline <ek@google.com> 1455118107 +0900

Expose measurement results to interested callers.

With this it's possible for callers to:

    Network network = ...
    LinkProperties lp = ...

    NetworkDiagnostics netdiag = new NetworkDiagnostics(network, lp, 5000);
    netdiag.startMeasurements();
    netdiag.waitForMeasurements();

    boolean result = true;
    for (Measurement m : netdiag.getMeasurements()) {
        if (!m.checkSucceeded()) {
            result = false;
            // Additional error handling here.
        }
    }

    return result;

Bug: 21832299
Bug: 26780890
Change-Id: Iaf7ff029e2c6a998b574c23d0dcde8d57a467a22
