def METHOD_NAME(self, job, port, flow):
    results = FlowMeasurementResults(measurement=self, flow=flow, warmup_duration=flow.warmup_duration)
    results.generator_results = SequentialPerfResult()
    results.generator_cpu_stats = SequentialPerfResult()
    results.receiver_results = SequentialPerfResult()
    results.receiver_cpu_stats = SequentialPerfResult()
    if not job.passed:
        timestamp = time.time()
        results.generator_results.append(PerfInterval(0, 0, "packets", timestamp))
        results.generator_cpu_stats.append(PerfInterval(0, 0, "cpu_percent", timestamp))
        results.receiver_results.append(PerfInterval(0, 0, "packets", timestamp))
        results.receiver_cpu_stats.append(PerfInterval(0, 0, "cpu_percent", timestamp))
    else:
        prev_time = job.result["start_time"]
        prev_tx_val = 0
        prev_rx_val = 0
        for i in job.result["data"]:
            time_delta = i["timestamp"] - prev_time
            tx_delta = i["measurement"][port]["opackets"] - prev_tx_val
            rx_delta = i["measurement"][port]["ipackets"] - prev_rx_val
            results.generator_results.append(PerfInterval(
                        tx_delta,
                        time_delta,
                        "pkts", i["timestamp"]))
            results.receiver_results.append(PerfInterval(
                        rx_delta,
                        time_delta,
                        "pkts", i["timestamp"]))
            prev_time = i["timestamp"]
            prev_tx_val = i["measurement"][port]["opackets"]
            prev_rx_val = i["measurement"][port]["ipackets"]
            cpu_delta = i["measurement"]["global"]["cpu_util"]
            results.generator_cpu_stats.append(PerfInterval(
                cpu_delta,
                time_delta,
                "cpu_percent", i["timestamp"]))
            results.receiver_cpu_stats.append(PerfInterval(
                cpu_delta,
                time_delta,
                "cpu_percent", i["timestamp"]))
    return results