code: func (q *TransferQueue) Add(name, path, oid string, size int64) {
  	t := &objectTuple{
  		Name: name,
  		Path: path,
  		Oid:  oid,
  		Size: size,
  	}
  
  	if objs := q.remember(t); len(objs.objects) > 1 {
  		if objs.completed {
  			// If there is already a completed transfer chain for
  			// this OID, then this object is already "done", and can
  			// be sent through as completed to the watchers.
  			for _, w := range q.watchers {
  				w <- t.ToTransfer()
  			}
  		}
  
  		// If the chain is not done, there is no reason to enqueue this
  		// transfer into 'q.incoming'.
  		tracerx.Printf("already transferring %q, skipping duplicate", t.Oid)
  		return
  	}
  
  	q.incoming <- t
  }
docs: // Add adds a *Transfer to the transfer queue. It only increments the amount
  // of waiting the TransferQueue has to do if the *Transfer "t" is new.
  //
  // If another transfer(s) with the same OID has been added to the *TransferQueue
  // already, the given transfer will not be enqueued, but will be sent to any
  // channel created by Watch() once the oldest transfer has completed.
  //
  // Only one file will be transferred to/from the Path element of the first
  // transfer.