#NEWLINE# def _processRelayDataCell( self , cell , origin ) : #NEWLINE# #INDENT# "Called when this circuit receives an incoming RelayData cell.\n\n        Take the following actions:\n\n            1. Pass the relay payload in this cell to the stream with the\n               stream_id contained in this RelayData cell. Drop the cell\n               if we have no reference to the stream_id contained in the\n               cell.\n            2. Decrement this circuit's delivery window (which will\n               automatically send a RelaySendMeCell if this circuit's\n               deliver window is low enough).\n\n        :param oppy.cell.relay.RelayDataCell cell: relay data cell recieved\n            from the network\n        :param int origin: which node on the circuit's path this cell\n            came from\n        " #NEWLINE# sid = cell . rheader . stream_id #NEWLINE# try : #NEWLINE# #INDENT# self . _streams [ sid ] . recv ( cell . rpayload ) #NEWLINE# self . _decDeliverWindow ( ) #NEWLINE# #UNINDENT# except KeyError : #NEWLINE# #INDENT# msg = 'Circuit {} received a RelayDataCell for nonexistent stream {}. Dropping cell.' . format ( cell . circuit_id , sid ) #NEWLINE# logging . debug ( msg )