def __call__(self, timestamp, src, dst, msg):
        if msg.type == 'call':
            replies = self._replies[dst][src][msg.method]
            if len(replies) > 0:
                reply_timestamp, reply = replies.popleft()
                self._print_pair(
                    timestamp, msg, reply_timestamp, reply, src, dst)
            else:
                self._requests[src][dst][msg.method].append(
                    (timestamp, msg))
        elif msg.type == 'reply':
            requests = self._requests[dst][src][msg.method]
            if len(requests) > 0:
                request_timestamp, request = requests.popleft()
                self._print_pair(
                    request_timestamp, request, timestamp, msg,
                    dst, src)
            else:
                self._replies[src][dst][msg.method].append(
                    (timestamp, msg))
        else:
            print_msg(timestamp, src, dst, msg, self._format_opts,
                      output=self._output)

        return True  # keep the sniffer running
We need to match up each (request, reply) pair. Presumably,
dataset/ETHPy150Open pinterest/thrift-tools/thrift_tools/printer.py/PairedPrinter.__call__