Documentation
¶
Overview ¶
Package model implements repository abstraction and file pulling mechanisms
Index ¶
- Constants
- Variables
- type ConnectionInfo
- type Model
- func (m *Model) AddConnection(rawConn io.Closer, protoConn protocol.Connection)
- func (m *Model) AddRepo(cfg config.RepositoryConfiguration)
- func (m *Model) CleanRepos()
- func (m *Model) Close(node protocol.NodeID, err error)
- func (m *Model) ClusterConfig(nodeID protocol.NodeID, cm protocol.ClusterConfigMessage)
- func (m *Model) Completion(node protocol.NodeID, repo string) float64
- func (m *Model) ConnectedTo(nodeID protocol.NodeID) bool
- func (m *Model) ConnectionStats() map[string]ConnectionInfo
- func (m *Model) CurrentGlobalFile(repo string, file string) protocol.FileInfo
- func (m *Model) CurrentRepoFile(repo string, file string) protocol.FileInfo
- func (m *Model) GetIgnores(repo string) ([]string, error)
- func (m *Model) GlobalSize(repo string) (files, deleted int, bytes int64)
- func (m *Model) Index(nodeID protocol.NodeID, repo string, fs []protocol.FileInfo)
- func (m *Model) IndexUpdate(nodeID protocol.NodeID, repo string, fs []protocol.FileInfo)
- func (m *Model) LocalSize(repo string) (files, deleted int, bytes int64)
- func (m *Model) LocalVersion(repo string) uint64
- func (m *Model) NeedFilesRepoLimited(repo string, maxFiles, maxBlocks int) []protocol.FileInfo
- func (m *Model) NeedSize(repo string) (files int, bytes int64)
- func (m *Model) NodeStatistics() map[string]stats.NodeStatistics
- func (m *Model) Override(repo string)
- func (m *Model) ReplaceLocal(repo string, fs []protocol.FileInfo)
- func (m *Model) Request(nodeID protocol.NodeID, repo, name string, offset int64, size int) ([]byte, error)
- func (m *Model) ScanRepo(repo string) error
- func (m *Model) ScanRepoSub(repo, sub string) error
- func (m *Model) ScanRepos()
- func (m *Model) SetIgnores(repo string, content []string) error
- func (m *Model) StartRepoRO(repo string)
- func (m *Model) StartRepoRW(repo string, threads int)
- func (m *Model) State(repo string) (string, time.Time)
Constants ¶
const ( RepoIdle repoState = iota RepoScanning RepoSyncing RepoCleaning )
const (
IndexPerBlockSize = 40 // Each BlockInfo is approximately this big
)
How many files to send in each Index/IndexUpdate message.
Variables ¶
var ( ErrNoSuchFile = errors.New("no such file") ErrInvalid = errors.New("file is invalid") )
Functions ¶
This section is empty.
Types ¶
type ConnectionInfo ¶
type ConnectionInfo struct { protocol.Statistics Address string ClientVersion string }
type Model ¶
type Model struct {
// contains filtered or unexported fields
}
func NewModel ¶
func NewModel(indexDir string, cfg *config.Configuration, nodeName, clientName, clientVersion string, db *leveldb.DB) *Model
NewModel creates and starts a new model. The model starts in read-only mode, where it sends index information to connected peers and responds to requests for file data without altering the local repository in any way.
func (*Model) AddConnection ¶
func (m *Model) AddConnection(rawConn io.Closer, protoConn protocol.Connection)
AddConnection adds a new peer connection to the model. An initial index will be sent to the connected peer, thereafter index updates whenever the local repository changes.
func (*Model) AddRepo ¶
func (m *Model) AddRepo(cfg config.RepositoryConfiguration)
func (*Model) CleanRepos ¶
func (m *Model) CleanRepos()
func (*Model) Close ¶
Close removes the peer from the model and closes the underlying connection if possible. Implements the protocol.Model interface.
func (*Model) ClusterConfig ¶
func (m *Model) ClusterConfig(nodeID protocol.NodeID, cm protocol.ClusterConfigMessage)
func (*Model) Completion ¶
Returns the completion status, in percent, for the given node and repo.
func (*Model) ConnectedTo ¶
ConnectedTo returns true if we are connected to the named node.
func (*Model) ConnectionStats ¶
func (m *Model) ConnectionStats() map[string]ConnectionInfo
ConnectionStats returns a map with connection statistics for each connected node.
func (*Model) CurrentGlobalFile ¶
func (*Model) CurrentRepoFile ¶
func (*Model) GlobalSize ¶
GlobalSize returns the number of files, deleted files and total bytes for all files in the global model.
func (*Model) Index ¶
Index is called when a new node is connected and we receive their full index. Implements the protocol.Model interface.
func (*Model) IndexUpdate ¶
IndexUpdate is called for incremental updates to connected nodes' indexes. Implements the protocol.Model interface.
func (*Model) LocalSize ¶
LocalSize returns the number of files, deleted files and total bytes for all files in the local repository.
func (*Model) LocalVersion ¶
Version returns the change version for the given repository. This is guaranteed to increment if the contents of the local or global repository has changed.
func (*Model) NeedFilesRepoLimited ¶
NeedFiles returns the list of currently needed files, stopping at maxFiles files or maxBlocks blocks. Limits <= 0 are ignored.
func (*Model) NodeStatistics ¶
func (m *Model) NodeStatistics() map[string]stats.NodeStatistics
Returns statistics about each node
func (*Model) ReplaceLocal ¶
ReplaceLocal replaces the local repository index with the given list of files.
func (*Model) Request ¶
func (m *Model) Request(nodeID protocol.NodeID, repo, name string, offset int64, size int) ([]byte, error)
Request returns the specified data segment by reading it from local disk. Implements the protocol.Model interface.
func (*Model) ScanRepoSub ¶
func (*Model) StartRepoRO ¶
StartRO starts read only processing on the current model. When in read only mode the model will announce files to the cluster but not pull in any external changes.
func (*Model) StartRepoRW ¶
StartRW starts read/write processing on the current model. When in read/write mode the model will attempt to keep in sync with the cluster by pulling needed files from peer nodes.