def _processRelayDataCell(self, cell, origin):
        '''Called when this circuit receives an incoming RelayData cell.

        Take the following actions:

            1. Pass the relay payload in this cell to the stream with the
               stream_id contained in this RelayData cell. Drop the cell
               if we have no reference to the stream_id contained in the
               cell.
            2. Decrement this circuit's delivery window (which will
               automatically send a RelaySendMeCell if this circuit's
               deliver window is low enough).

        :param oppy.cell.relay.RelayDataCell cell: relay data cell recieved
            from the network
        :param int origin: which node on the circuit's path this cell
            came from
        '''
        sid = cell.rheader.stream_id

        try:
            self._streams[sid].recv(cell.rpayload)
            self._decDeliverWindow()
        except __HOLE__:
            msg = ("Circuit {} received a RelayDataCell for nonexistent "
                   "stream {}. Dropping cell.".format(self.circuit_id, sid))
            logging.debug(msg)
dataset/ETHPy150Open nskinkel/oppy/oppy/circuit/circuit.py/Circuit._processRelayDataCell