def __init__(self, link, speed):
        self.link = link
        # XXX BAD HACK - this naive implementation needs 2 rounds
        self.speed = speed * 2

        # pass on unused Link object callbacks
        self.on_connect = link.on_connect
        self.on_disconnect = link.on_disconnect
        self.on_recv = link.on_recv

        # bridge callbacks
        self.on_ready_to_send = Callback()
        self.on_loop_pass = Callback()

        # hooks for throttling
        self.link.on_connect.add(self._on_connect)
        self.link.on_disconnect.add(self._on_disconnect)
        self.link.on_ready_to_send.add(self._on_ready_to_send)
        self.link.on_loop_pass.add(self._on_loop_pass)

        #: data buffers {conn_id: ConnectionInfo}
        self.connections = {}
        #: set of connections waiting for throttle release
        self.stopped = set()

    ##########################################################
Accepts normal responses from the device.
dataset/ETHPy150Open dsiroky/snakemq/snakemq/throttle.py/Throttle.__init__--crossover with--dataset/ETHPy150Open google/openhtf/openhtf/plugs/usb/fastboot_protocol.py/FastbootProtocol.HandleSimpleResponses