code: def process_npdu(self, npdu):
          
          if _debug: RouterToRouterService._debug("process_npdu %r", npdu)
  
          # encode the npdu as if it was about to be delivered to the network
          pdu = PDU()
          npdu.encode(pdu)
          if _debug: RouterToRouterService._debug("    - pdu: %r", pdu)
  
          # broadcast messages go to everyone
          if pdu.pduDestination.addrType == Address.localBroadcastAddr:
              destList = self.connections.keys()
          else:
              conn = self.connections.get(pdu.pduDestination, None)
              if not conn:
                  if _debug: RouterToRouterService._debug("    - not a connected client")
  
                  # start a connection attempt
                  conn = self.connect(pdu.pduDestination)
              if not conn.connected:
                  # keep a reference to this pdu to send after the ack comes back
                  conn.pendingNPDU.append(pdu)
                  return
  
              destList = [pdu.pduDestination]
          if _debug: RouterToRouterService._debug("    - destList: %r", destList)
  
          for dest in destList:
              # make a router-to-router NPDU
              xpdu = RouterToRouterNPDU(pdu)
              xpdu.pduDestination = dest
  
              # send it to the multiplexer
              self.service_request(xpdu)
docs: encode NPDUs from the service access point and send them downstream.