protocol

package
v0.8.6 Latest Latest
Warning

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

Go to latest
Published: May 16, 2014 License: MIT Imports: 11 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
)
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")
)

Functions

This section is empty.

Types

type BlockInfo

type BlockInfo struct {
	Size uint32
	Hash []byte // max:64
}

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) UnmarshalXDR added in v0.6.0

func (o *BlockInfo) 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) 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

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

type FileInfo

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

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) MarshalXDR added in v0.6.0

func (o FileInfo) MarshalXDR() []byte

func (*FileInfo) UnmarshalXDR added in v0.6.0

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

type IndexMessage added in v0.6.0

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

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

type Node struct {
	ID    string // max:64
	Flags uint32
}

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 Option added in v0.6.0

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

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) 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) 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 Statistics

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

Jump to

Keyboard shortcuts

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