Documentation
¶
Overview ¶
Package protocol implements the Block Exchange Protocol.
Index ¶
Constants ¶
View Source
const ( FlagDeleted uint32 = 1 << 12 FlagInvalid = 1 << 13 FlagDirectory = 1 << 14 )
View Source
const ( )
View Source
const BlockSize = 128 * 1024
Variables ¶
View Source
var ( ErrClusterHash = fmt.Errorf("configuration error: mismatched cluster hash") ErrClosed = errors.New("connection closed") )
Functions ¶
This section is empty.
Types ¶
type BlockInfo ¶
func (BlockInfo) MarshalXDR ¶ added in v0.6.0
func (*BlockInfo) UnmarshalXDR ¶ added in v0.6.0
type ClusterConfigMessage ¶ added in v0.8.0
type ClusterConfigMessage struct {
ClientName string // max:64
ClientVersion string // max:64
Repositories []Repository // max:64
Options []Option // max:64
}
func (*ClusterConfigMessage) DecodeXDR ¶ added in v0.8.0
func (o *ClusterConfigMessage) DecodeXDR(r io.Reader) error
func (ClusterConfigMessage) EncodeXDR ¶ added in v0.8.0
func (o ClusterConfigMessage) EncodeXDR(w io.Writer) (int, error)
func (ClusterConfigMessage) MarshalXDR ¶ added in v0.8.0
func (o ClusterConfigMessage) MarshalXDR() []byte
func (*ClusterConfigMessage) UnmarshalXDR ¶ added in v0.8.0
func (o *ClusterConfigMessage) UnmarshalXDR(bs []byte) error
type Connection ¶
type Connection interface {
ID() string
Index(repo string, files []FileInfo)
Request(repo string, name string, offset int64, size int) ([]byte, error)
ClusterConfig(config ClusterConfigMessage)
Statistics() Statistics
}
func NewConnection ¶
type FileInfo ¶
type FileInfo struct {
Name string // max:1024
Flags uint32
Modified int64
Version uint64
Blocks []BlockInfo // max:100000
}
func (FileInfo) MarshalXDR ¶ added in v0.6.0
func (*FileInfo) UnmarshalXDR ¶ added in v0.6.0
type IndexMessage ¶ added in v0.6.0
func (*IndexMessage) DecodeXDR ¶ added in v0.6.0
func (o *IndexMessage) DecodeXDR(r io.Reader) error
func (IndexMessage) EncodeXDR ¶ added in v0.6.0
func (o IndexMessage) EncodeXDR(w io.Writer) (int, error)
func (IndexMessage) MarshalXDR ¶ added in v0.6.0
func (o IndexMessage) MarshalXDR() []byte
func (*IndexMessage) UnmarshalXDR ¶ added in v0.6.0
func (o *IndexMessage) UnmarshalXDR(bs []byte) error
type Model ¶
type Model interface {
// An index was received from the peer node
Index(nodeID string, repo string, files []FileInfo)
// An index update was received from the peer node
IndexUpdate(nodeID string, repo string, files []FileInfo)
// A request was made by the peer node
Request(nodeID string, repo string, name string, offset int64, size int) ([]byte, error)
// A cluster configuration message was received
ClusterConfig(nodeID string, config ClusterConfigMessage)
// The peer node closed the connection
Close(nodeID string, err error)
}
type Node ¶ added in v0.8.0
func (Node) MarshalXDR ¶ added in v0.8.0
func (*Node) UnmarshalXDR ¶ added in v0.8.0
type Option ¶ added in v0.6.0
func (Option) MarshalXDR ¶ added in v0.6.0
func (*Option) UnmarshalXDR ¶ added in v0.6.0
type Repository ¶ added in v0.8.0
func (Repository) EncodeXDR ¶ added in v0.8.0
func (o Repository) EncodeXDR(w io.Writer) (int, error)
func (Repository) MarshalXDR ¶ added in v0.8.0
func (o Repository) MarshalXDR() []byte
func (*Repository) UnmarshalXDR ¶ added in v0.8.0
func (o *Repository) UnmarshalXDR(bs []byte) error
type RequestMessage ¶ added in v0.6.0
type RequestMessage struct {
Repository string // max:64
Name string // max:1024
Offset uint64
Size uint32
}
func (*RequestMessage) DecodeXDR ¶ added in v0.6.0
func (o *RequestMessage) DecodeXDR(r io.Reader) error
func (RequestMessage) EncodeXDR ¶ added in v0.6.0
func (o RequestMessage) EncodeXDR(w io.Writer) (int, error)
func (RequestMessage) MarshalXDR ¶ added in v0.6.0
func (o RequestMessage) MarshalXDR() []byte
func (*RequestMessage) UnmarshalXDR ¶ added in v0.6.0
func (o *RequestMessage) UnmarshalXDR(bs []byte) error
Click to show internal directories.
Click to hide internal directories.