Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type PeerManagerFactory ¶
type PeerManagerFactory func(ctx context.Context, id uint64) bssession.PeerManager
PeerManagerFactory generates a new peer manager for a session.
type RequestSplitterFactory ¶
type RequestSplitterFactory func(ctx context.Context) bssession.RequestSplitter
RequestSplitterFactory generates a new request splitter for a session.
type Session ¶
type Session interface { exchange.Fetcher InterestedIn(cid.Cid) bool ReceiveBlockFrom(peer.ID, blocks.Block) UpdateReceiveCounters(blocks.Block) }
Session is a session that is managed by the session manager
type SessionFactory ¶
type SessionFactory func(ctx context.Context, id uint64, pm bssession.PeerManager, srs bssession.RequestSplitter) Session
SessionFactory generates a new session for the SessionManager to track.
type SessionManager ¶
type SessionManager struct {
// contains filtered or unexported fields
}
SessionManager is responsible for creating, managing, and dispatching to sessions.
func New ¶
func New(ctx context.Context, sessionFactory SessionFactory, peerManagerFactory PeerManagerFactory, requestSplitterFactory RequestSplitterFactory) *SessionManager
New creates a new SessionManager.
func (*SessionManager) GetNextSessionID ¶
func (sm *SessionManager) GetNextSessionID() uint64
GetNextSessionID returns the next sequentional identifier for a session.
func (*SessionManager) NewSession ¶
func (sm *SessionManager) NewSession(ctx context.Context) exchange.Fetcher
NewSession initializes a session with the given context, and adds to the session manager.
func (*SessionManager) ReceiveBlockFrom ¶
func (sm *SessionManager) ReceiveBlockFrom(from peer.ID, blk blocks.Block)
ReceiveBlockFrom receives a block from a peer and dispatches to interested sessions.
func (*SessionManager) UpdateReceiveCounters ¶
func (sm *SessionManager) UpdateReceiveCounters(blk blocks.Block)
UpdateReceiveCounters records the fact that a block was received, allowing sessions to track duplicates