code: func (p *Peer) QueueInventory(invVect *wire.InvVect) {
  	// Don't add the inventory to the send queue if the peer is already
  	// known to have it.
  	if p.knownInventory.Exists(invVect) {
  		return
  	}
  
  	// Avoid risk of deadlock if goroutine already exited.  The goroutine
  	// we will be sending to hangs around until it knows for a fact that
  	// it is marked as disconnected and *then* it drains the channels.
  	if !p.Connected() {
  		return
  	}
  
  	p.outputInvChan <- invVect
  }
docs: // QueueInventory adds the passed inventory to the inventory send queue which
  // might not be sent right away, rather it is trickled to the peer in batches.
  // Inventory that the peer is already known to have is ignored.
  //
  // This function is safe for concurrent access.