def __call__(self, timestamp, src, dst, msg):
        if msg.type == 'call':
            self._requests[src][dst][msg.method][msg.seqid] = (timestamp, msg)
        elif msg.type == 'reply':
            # have we seen the corresponding call?
            calls = self._requests[dst][src][msg.method]
            if msg.seqid in calls:
                request_timestamp, request = calls.pop(msg.seqid)
                latency = timestamp - request_timestamp
                self._latencies_by_method[msg.method].append(latency)
                self._seen += 1

                # let the user know we are still working
                self._output.write('\rCollecting (%d/%d)' % (
                        self._seen, self._expected))
                self._output.flush()

        if self._seen < self._expected:
            return True  # we still need more messages

        self.report()

        # what about unmatched calls?
        unmatched = 0
        for src, dst in self._requests.items():
            for method, calls in dst.items():
                unmatched += len(calls)

        if unmatched > 0:
            self._output.write('%d unmatched calls\n' % unmatched)

        return False  # we are done
Given a Django web request object, returns the OpenID 'trust root'
dataset/ETHPy150Open pinterest/thrift-tools/thrift_tools/printer.py/LatencyPrinter.__call__--crossover with--dataset/ETHPy150Open adieu/python-openid/examples/djopenid/util.py/getBaseURL