sessionmanager

package
v0.0.0-...-15711b3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 10, 2019 License: MIT, MIT Imports: 7 Imported by: 0

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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL