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