func NewDefaultIntroducer(
	peerSigner client.Signer,
	orgSigner client.Signer,
	rec comm.QueryRecorder,
	selfID id.ID,
	clients client.Pool,
) Introducer {
	ic := client.NewIntroducerCreator(clients)
	rp := NewResponseProcessor(peer.NewFromer(), selfID)
	return NewIntroducer(peerSigner, orgSigner, rec, ic, rp)
}
NewDefaultIntroducer creates a new Introducer with the given peerSigner and default querier and
response processor.
package introduce
import (
	"bytes"
	"fmt"
	"sync"
	"github.com/drausin/libri/libri/common/id"
	"github.com/drausin/libri/libri/librarian/api"
	"github.com/drausin/libri/libri/librarian/client"
	"github.com/drausin/libri/libri/librarian/server/comm"
	"github.com/drausin/libri/libri/librarian/server/peer"
)
type Introducer interface {
	Introduce(intro *Introduction, seeds []peer.Peer) error
}
type introducer struct {
	peerSigner        client.Signer
	orgSigner         client.Signer
	introducerCreator client.IntroducerCreator
	repProcessor      ResponseProcessor
	rec               comm.QueryRecorder
}
func NewIntroducer(
	peerSigner client.Signer,
	orgSigner client.Signer,
	rec comm.QueryRecorder,
	c client.IntroducerCreator,
	rp ResponseProcessor,
) Introducer {
	return &introducer{
		peerSigner:        peerSigner,
		orgSigner:         orgSigner,
		introducerCreator: c,
		repProcessor:      rp,
		rec:               rec,
	}
}