protocol

package
v0.9.8 Latest Latest
Warning

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

Go to latest
Published: Aug 23, 2014 License: MIT Imports: 20 Imported by: 0

Documentation

Overview

Package protocol implements the Block Exchange Protocol.

Index

Constants

View Source
const (
	FlagDeleted    uint32 = 1 << 12
	FlagInvalid           = 1 << 13
	FlagDirectory         = 1 << 14
	FlagNoPermBits        = 1 << 15
)
View Source
const (
	FlagShareTrusted  uint32 = 1 << 0
	FlagShareReadOnly        = 1 << 1
	FlagShareBits            = 0x000000ff
)
View Source
const (
	BlockSize = 128 * 1024
)

Variables

View Source
var (
	ErrClusterHash = fmt.Errorf("configuration error: mismatched cluster hash")
	ErrClosed      = errors.New("connection closed")
)
View Source
var LocalNodeID = NodeID{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}

Functions

func HasPermissionBits added in v0.8.10

func HasPermissionBits(bits uint32) bool

func IsDeleted added in v0.8.10

func IsDeleted(bits uint32) bool

func IsDirectory added in v0.8.10

func IsDirectory(bits uint32) bool

func IsInvalid added in v0.8.10

func IsInvalid(bits uint32) bool

func TotalInOut added in v0.8.10

func TotalInOut() (uint64, uint64)

Types

type BlockInfo

type BlockInfo struct {
	Offset int64 // noencode (cache only)
	Size   uint32
	Hash   []byte // max:64
}

func (BlockInfo) AppendXDR added in v0.9.0

func (o BlockInfo) AppendXDR(bs []byte) []byte

func (*BlockInfo) DecodeXDR added in v0.6.0

func (o *BlockInfo) DecodeXDR(r io.Reader) error

func (BlockInfo) EncodeXDR added in v0.6.0

func (o BlockInfo) EncodeXDR(w io.Writer) (int, error)

func (BlockInfo) MarshalXDR added in v0.6.0

func (o BlockInfo) MarshalXDR() []byte

func (BlockInfo) String added in v0.9.0

func (b BlockInfo) String() string

func (*BlockInfo) UnmarshalXDR added in v0.6.0

func (o *BlockInfo) UnmarshalXDR(bs []byte) error

type CloseMessage added in v0.9.0

type CloseMessage struct {
	Reason string // max:1024
}

func (CloseMessage) AppendXDR added in v0.9.0

func (o CloseMessage) AppendXDR(bs []byte) []byte

func (*CloseMessage) DecodeXDR added in v0.9.0

func (o *CloseMessage) DecodeXDR(r io.Reader) error

func (CloseMessage) EncodeXDR added in v0.9.0

func (o CloseMessage) EncodeXDR(w io.Writer) (int, error)

func (CloseMessage) MarshalXDR added in v0.9.0

func (o CloseMessage) MarshalXDR() []byte

func (*CloseMessage) UnmarshalXDR added in v0.9.0

func (o *CloseMessage) UnmarshalXDR(bs []byte) error

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) AppendXDR added in v0.9.0

func (o ClusterConfigMessage) AppendXDR(bs []byte) []byte

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) GetOption added in v0.9.5

func (o *ClusterConfigMessage) GetOption(key string) string

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() NodeID
	Name() string
	Index(repo string, files []FileInfo) error
	IndexUpdate(repo string, files []FileInfo) error
	Request(repo string, name string, offset int64, size int) ([]byte, error)
	ClusterConfig(config ClusterConfigMessage)
	Statistics() Statistics
}

func NewConnection

func NewConnection(nodeID NodeID, reader io.Reader, writer io.Writer, receiver Model, name string, compress bool) Connection

type EmptyMessage added in v0.9.0

type EmptyMessage struct{}

func (EmptyMessage) AppendXDR added in v0.9.0

func (o EmptyMessage) AppendXDR(bs []byte) []byte

func (*EmptyMessage) DecodeXDR added in v0.9.0

func (o *EmptyMessage) DecodeXDR(r io.Reader) error

func (EmptyMessage) EncodeXDR added in v0.9.0

func (o EmptyMessage) EncodeXDR(w io.Writer) (int, error)

func (EmptyMessage) MarshalXDR added in v0.9.0

func (o EmptyMessage) MarshalXDR() []byte

func (*EmptyMessage) UnmarshalXDR added in v0.9.0

func (o *EmptyMessage) UnmarshalXDR(bs []byte) error

type FileInfo

type FileInfo struct {
	Name         string // max:1024
	Flags        uint32
	Modified     int64
	Version      uint64
	LocalVersion uint64
	Blocks       []BlockInfo
}

func (FileInfo) AppendXDR added in v0.9.0

func (o FileInfo) AppendXDR(bs []byte) []byte

func (*FileInfo) DecodeXDR added in v0.6.0

func (o *FileInfo) DecodeXDR(r io.Reader) error

func (FileInfo) EncodeXDR added in v0.6.0

func (o FileInfo) EncodeXDR(w io.Writer) (int, error)

func (FileInfo) IsDeleted added in v0.9.3

func (f FileInfo) IsDeleted() bool

func (FileInfo) MarshalXDR added in v0.6.0

func (o FileInfo) MarshalXDR() []byte

func (FileInfo) Size added in v0.9.0

func (f FileInfo) Size() (bytes int64)

func (FileInfo) String added in v0.9.0

func (f FileInfo) String() string

func (*FileInfo) UnmarshalXDR added in v0.6.0

func (o *FileInfo) UnmarshalXDR(bs []byte) error

type FileInfoTruncated added in v0.9.3

type FileInfoTruncated struct {
	Name         string // max:1024
	Flags        uint32
	Modified     int64
	Version      uint64
	LocalVersion uint64
	NumBlocks    uint32
}

Used for unmarshalling a FileInfo structure but skipping the actual block list

func (FileInfoTruncated) AppendXDR added in v0.9.3

func (o FileInfoTruncated) AppendXDR(bs []byte) []byte

func (*FileInfoTruncated) DecodeXDR added in v0.9.3

func (o *FileInfoTruncated) DecodeXDR(r io.Reader) error

func (FileInfoTruncated) EncodeXDR added in v0.9.3

func (o FileInfoTruncated) EncodeXDR(w io.Writer) (int, error)

func (FileInfoTruncated) IsDeleted added in v0.9.3

func (f FileInfoTruncated) IsDeleted() bool

func (FileInfoTruncated) MarshalXDR added in v0.9.3

func (o FileInfoTruncated) MarshalXDR() []byte

func (FileInfoTruncated) Size added in v0.9.3

func (f FileInfoTruncated) Size() int64

Returns a statistical guess on the size, not the exact figure

func (*FileInfoTruncated) UnmarshalXDR added in v0.9.3

func (o *FileInfoTruncated) UnmarshalXDR(bs []byte) error

type FileIntf added in v0.9.3

type FileIntf interface {
	Size() int64
	IsDeleted() bool
}

type IndexMessage added in v0.6.0

type IndexMessage struct {
	Repository string // max:64
	Files      []FileInfo
}

func (IndexMessage) AppendXDR added in v0.9.0

func (o IndexMessage) AppendXDR(bs []byte) []byte

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 NodeID, repo string, files []FileInfo)
	// An index update was received from the peer node
	IndexUpdate(nodeID NodeID, repo string, files []FileInfo)
	// A request was made by the peer node
	Request(nodeID NodeID, repo string, name string, offset int64, size int) ([]byte, error)
	// A cluster configuration message was received
	ClusterConfig(nodeID NodeID, config ClusterConfigMessage)
	// The peer node closed the connection
	Close(nodeID NodeID, err error)
}

type Node added in v0.8.0

type Node struct {
	ID              []byte // max:32
	Flags           uint32
	MaxLocalVersion uint64
}

func (Node) AppendXDR added in v0.9.0

func (o Node) AppendXDR(bs []byte) []byte

func (*Node) DecodeXDR added in v0.8.0

func (o *Node) DecodeXDR(r io.Reader) error

func (Node) EncodeXDR added in v0.8.0

func (o Node) EncodeXDR(w io.Writer) (int, error)

func (Node) MarshalXDR added in v0.8.0

func (o Node) MarshalXDR() []byte

func (*Node) UnmarshalXDR added in v0.8.0

func (o *Node) UnmarshalXDR(bs []byte) error

type NodeID added in v0.9.0

type NodeID [32]byte

func NewNodeID added in v0.9.0

func NewNodeID(rawCert []byte) NodeID

NewNodeID generates a new node ID from the raw bytes of a certificate

func NodeIDFromBytes added in v0.9.0

func NodeIDFromBytes(bs []byte) NodeID

func NodeIDFromString added in v0.9.0

func NodeIDFromString(s string) (NodeID, error)

func (NodeID) Compare added in v0.9.0

func (n NodeID) Compare(other NodeID) int

func (NodeID) Equals added in v0.9.0

func (n NodeID) Equals(other NodeID) bool

func (NodeID) GoString added in v0.9.0

func (n NodeID) GoString() string

func (*NodeID) MarshalText added in v0.9.0

func (n *NodeID) MarshalText() ([]byte, error)

func (NodeID) String added in v0.9.0

func (n NodeID) String() string

String returns the canonical string representation of the node ID

func (*NodeID) UnmarshalText added in v0.9.0

func (n *NodeID) UnmarshalText(bs []byte) error

type Option added in v0.6.0

type Option struct {
	Key   string // max:64
	Value string // max:1024
}

func (Option) AppendXDR added in v0.9.0

func (o Option) AppendXDR(bs []byte) []byte

func (*Option) DecodeXDR added in v0.6.0

func (o *Option) DecodeXDR(r io.Reader) error

func (Option) EncodeXDR added in v0.6.0

func (o Option) EncodeXDR(w io.Writer) (int, error)

func (Option) MarshalXDR added in v0.6.0

func (o Option) MarshalXDR() []byte

func (*Option) UnmarshalXDR added in v0.6.0

func (o *Option) UnmarshalXDR(bs []byte) error

type Repository added in v0.8.0

type Repository struct {
	ID    string // max:64
	Nodes []Node // max:64
}

func (Repository) AppendXDR added in v0.9.0

func (o Repository) AppendXDR(bs []byte) []byte

func (*Repository) DecodeXDR added in v0.8.0

func (o *Repository) DecodeXDR(r io.Reader) error

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) AppendXDR added in v0.9.0

func (o RequestMessage) AppendXDR(bs []byte) []byte

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

type ResponseMessage added in v0.9.0

type ResponseMessage struct {
	Data []byte
}

func (ResponseMessage) AppendXDR added in v0.9.0

func (o ResponseMessage) AppendXDR(bs []byte) []byte

func (*ResponseMessage) DecodeXDR added in v0.9.0

func (o *ResponseMessage) DecodeXDR(r io.Reader) error

func (ResponseMessage) EncodeXDR added in v0.9.0

func (o ResponseMessage) EncodeXDR(w io.Writer) (int, error)

func (ResponseMessage) MarshalXDR added in v0.9.0

func (o ResponseMessage) MarshalXDR() []byte

func (*ResponseMessage) UnmarshalXDR added in v0.9.0

func (o *ResponseMessage) UnmarshalXDR(bs []byte) error

type Statistics

type Statistics struct {
	At            time.Time
	InBytesTotal  uint64
	OutBytesTotal uint64
}

Jump to

Keyboard shortcuts

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