Documentation ¶
Overview ¶
Package protocol is a generated protocol buffer package. It is generated from these files: bep.proto It has these top-level messages: Hello Header ClusterConfig Folder Device Index IndexUpdate FileInfo BlockInfo Vector Counter Request Response DownloadProgress FileDownloadProgressUpdate Ping Close
Package protocol implements the Block Exchange Protocol.
Index ¶
- Constants
- Variables
- func IsVersionMismatch(err error) bool
- func TotalInOut() (int64, int64)
- type BlockInfo
- func (*BlockInfo) Descriptor() ([]byte, []int)
- func (b BlockInfo) IsEmpty() bool
- func (m *BlockInfo) Marshal() (data []byte, err error)
- func (m *BlockInfo) MarshalTo(data []byte) (int, error)
- func (*BlockInfo) ProtoMessage()
- func (m *BlockInfo) ProtoSize() (n int)
- func (m *BlockInfo) Reset()
- func (b BlockInfo) String() string
- func (m *BlockInfo) Unmarshal(data []byte) error
- type Close
- func (*Close) Descriptor() ([]byte, []int)
- func (m *Close) Marshal() (data []byte, err error)
- func (m *Close) MarshalTo(data []byte) (int, error)
- func (*Close) ProtoMessage()
- func (m *Close) ProtoSize() (n int)
- func (m *Close) Reset()
- func (m *Close) String() string
- func (m *Close) Unmarshal(data []byte) error
- type ClusterConfig
- func (*ClusterConfig) Descriptor() ([]byte, []int)
- func (m *ClusterConfig) Marshal() (data []byte, err error)
- func (m *ClusterConfig) MarshalTo(data []byte) (int, error)
- func (*ClusterConfig) ProtoMessage()
- func (m *ClusterConfig) ProtoSize() (n int)
- func (m *ClusterConfig) Reset()
- func (m *ClusterConfig) String() string
- func (m *ClusterConfig) Unmarshal(data []byte) error
- type Compression
- type Connection
- type Counter
- func (*Counter) Descriptor() ([]byte, []int)
- func (m *Counter) Marshal() (data []byte, err error)
- func (m *Counter) MarshalTo(data []byte) (int, error)
- func (*Counter) ProtoMessage()
- func (m *Counter) ProtoSize() (n int)
- func (m *Counter) Reset()
- func (m *Counter) String() string
- func (m *Counter) Unmarshal(data []byte) error
- type Device
- func (*Device) Descriptor() ([]byte, []int)
- func (m *Device) Marshal() (data []byte, err error)
- func (m *Device) MarshalTo(data []byte) (int, error)
- func (*Device) ProtoMessage()
- func (m *Device) ProtoSize() (n int)
- func (m *Device) Reset()
- func (m *Device) String() string
- func (m *Device) Unmarshal(data []byte) error
- type DeviceID
- type DownloadProgress
- func (*DownloadProgress) Descriptor() ([]byte, []int)
- func (m *DownloadProgress) Marshal() (data []byte, err error)
- func (m *DownloadProgress) MarshalTo(data []byte) (int, error)
- func (*DownloadProgress) ProtoMessage()
- func (m *DownloadProgress) ProtoSize() (n int)
- func (m *DownloadProgress) Reset()
- func (m *DownloadProgress) String() string
- func (m *DownloadProgress) Unmarshal(data []byte) error
- type ErrorCode
- type FileDownloadProgressUpdate
- func (*FileDownloadProgressUpdate) Descriptor() ([]byte, []int)
- func (m *FileDownloadProgressUpdate) Marshal() (data []byte, err error)
- func (m *FileDownloadProgressUpdate) MarshalTo(data []byte) (int, error)
- func (*FileDownloadProgressUpdate) ProtoMessage()
- func (m *FileDownloadProgressUpdate) ProtoSize() (n int)
- func (m *FileDownloadProgressUpdate) Reset()
- func (m *FileDownloadProgressUpdate) String() string
- func (m *FileDownloadProgressUpdate) Unmarshal(data []byte) error
- type FileDownloadProgressUpdateType
- type FileInfo
- func (*FileInfo) Descriptor() ([]byte, []int)
- func (f FileInfo) FileName() string
- func (f FileInfo) FileSize() int64
- func (f FileInfo) HasPermissionBits() bool
- func (f FileInfo) IsDeleted() bool
- func (f FileInfo) IsDirectory() bool
- func (f FileInfo) IsInvalid() bool
- func (f FileInfo) IsSymlink() bool
- func (m *FileInfo) Marshal() (data []byte, err error)
- func (m *FileInfo) MarshalTo(data []byte) (int, error)
- func (f FileInfo) ModTime() time.Time
- func (*FileInfo) ProtoMessage()
- func (m *FileInfo) ProtoSize() (n int)
- func (m *FileInfo) Reset()
- func (f FileInfo) String() string
- func (m *FileInfo) Unmarshal(data []byte) error
- func (f FileInfo) WinsConflict(other FileInfo) bool
- type FileInfoType
- type Folder
- func (*Folder) Descriptor() ([]byte, []int)
- func (m *Folder) Marshal() (data []byte, err error)
- func (m *Folder) MarshalTo(data []byte) (int, error)
- func (*Folder) ProtoMessage()
- func (m *Folder) ProtoSize() (n int)
- func (m *Folder) Reset()
- func (m *Folder) String() string
- func (m *Folder) Unmarshal(data []byte) error
- type Header
- func (*Header) Descriptor() ([]byte, []int)
- func (m *Header) Marshal() (data []byte, err error)
- func (m *Header) MarshalTo(data []byte) (int, error)
- func (*Header) ProtoMessage()
- func (m *Header) ProtoSize() (n int)
- func (m *Header) Reset()
- func (m *Header) String() string
- func (m *Header) Unmarshal(data []byte) error
- type Hello
- func (*Hello) Descriptor() ([]byte, []int)
- func (m Hello) Magic() uint32
- func (m *Hello) Marshal() (data []byte, err error)
- func (m *Hello) MarshalTo(data []byte) (int, error)
- func (*Hello) ProtoMessage()
- func (m *Hello) ProtoSize() (n int)
- func (m *Hello) Reset()
- func (m *Hello) String() string
- func (m *Hello) Unmarshal(data []byte) error
- type HelloIntf
- type HelloResult
- type Index
- func (*Index) Descriptor() ([]byte, []int)
- func (m *Index) Marshal() (data []byte, err error)
- func (m *Index) MarshalTo(data []byte) (int, error)
- func (*Index) ProtoMessage()
- func (m *Index) ProtoSize() (n int)
- func (m *Index) Reset()
- func (m *Index) String() string
- func (m *Index) Unmarshal(data []byte) error
- type IndexID
- type IndexUpdate
- func (*IndexUpdate) Descriptor() ([]byte, []int)
- func (m *IndexUpdate) Marshal() (data []byte, err error)
- func (m *IndexUpdate) MarshalTo(data []byte) (int, error)
- func (*IndexUpdate) ProtoMessage()
- func (m *IndexUpdate) ProtoSize() (n int)
- func (m *IndexUpdate) Reset()
- func (m *IndexUpdate) String() string
- func (m *IndexUpdate) Unmarshal(data []byte) error
- type MessageCompression
- type MessageType
- type Model
- type Ordering
- type Ping
- func (*Ping) Descriptor() ([]byte, []int)
- func (m *Ping) Marshal() (data []byte, err error)
- func (m *Ping) MarshalTo(data []byte) (int, error)
- func (*Ping) ProtoMessage()
- func (m *Ping) ProtoSize() (n int)
- func (m *Ping) Reset()
- func (m *Ping) String() string
- func (m *Ping) Unmarshal(data []byte) error
- type Request
- func (*Request) Descriptor() ([]byte, []int)
- func (m *Request) Marshal() (data []byte, err error)
- func (m *Request) MarshalTo(data []byte) (int, error)
- func (*Request) ProtoMessage()
- func (m *Request) ProtoSize() (n int)
- func (m *Request) Reset()
- func (m *Request) String() string
- func (m *Request) Unmarshal(data []byte) error
- type Response
- func (*Response) Descriptor() ([]byte, []int)
- func (m *Response) Marshal() (data []byte, err error)
- func (m *Response) MarshalTo(data []byte) (int, error)
- func (*Response) ProtoMessage()
- func (m *Response) ProtoSize() (n int)
- func (m *Response) Reset()
- func (m *Response) String() string
- func (m *Response) Unmarshal(data []byte) error
- type ShortID
- type Statistics
- type Vector
- func (v Vector) Compare(b Vector) Ordering
- func (v Vector) Concurrent(b Vector) bool
- func (v Vector) Copy() Vector
- func (v Vector) Counter(id ShortID) uint64
- func (*Vector) Descriptor() ([]byte, []int)
- func (v Vector) Equal(b Vector) bool
- func (v Vector) GreaterEqual(b Vector) bool
- func (v Vector) LesserEqual(b Vector) bool
- func (m *Vector) Marshal() (data []byte, err error)
- func (m *Vector) MarshalTo(data []byte) (int, error)
- func (v Vector) Merge(b Vector) Vector
- func (*Vector) ProtoMessage()
- func (m *Vector) ProtoSize() (n int)
- func (m *Vector) Reset()
- func (m *Vector) String() string
- func (m *Vector) Unmarshal(data []byte) error
- func (v Vector) Update(id ShortID) Vector
- type Version13HelloMessage
- func (m Version13HelloMessage) Magic() uint32
- func (m Version13HelloMessage) Marshal() ([]byte, error)
- func (o Version13HelloMessage) MarshalXDR() ([]byte, error)
- func (o Version13HelloMessage) MarshalXDRInto(m *xdr.Marshaller) error
- func (o Version13HelloMessage) MustMarshalXDR() []byte
- func (o *Version13HelloMessage) UnmarshalXDR(bs []byte) error
- func (o *Version13HelloMessage) UnmarshalXDRFrom(u *xdr.Unmarshaller) error
- func (o Version13HelloMessage) XDRSize() int
Constants ¶
const ( // BlockSize is the standard ata block size (128 KiB) BlockSize = 128 << 10 // MaxMessageLen is the largest message size allowed on the wire. (500 MB) MaxMessageLen = 500 * 1000 * 1000 )
const ( FlagFolderReadOnly uint32 = 1 << 0 FlagFolderIgnorePerms = 1 << 1 FlagFolderIgnoreDelete = 1 << 2 FlagFolderDisabledTempIndexes = 1 << 3 FlagFolderAll = 1<<4 - 1 )
ClusterConfigMessage.Folders flags
const ( FlagIntroducer = 1 << 2 )
ClusterConfigMessage.Folders.Devices flags
const ( // PingSendInterval is how often we make sure to send a message, by // triggering pings if necessary. PingSendInterval = 90 * time.Second // ReceiveTimeout is the longest we'll wait for a message from the other // side before closing the connection. ReceiveTimeout = 300 * time.Second )
const (
FlagFromTemporary uint32 = 1 << iota
)
Request message flags
const (
SyntheticDirectorySize = 128
)
Variables ¶
var ( ErrInvalidLengthBep = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowBep = fmt.Errorf("proto: integer overflow") )
var ( ErrNoError error ErrGeneric = errors.New("generic error") ErrNoSuchFile = errors.New("no such file") ErrInvalid = errors.New("file is invalid") )
var ( // ErrTooOldVersion12 is returned by ExchangeHello when the other side // speaks the older, incompatible version 0.12 of the protocol. ErrTooOldVersion12 = errors.New("the remote device speaks an older version of the protocol (v0.12) not compatible with this version") // ErrTooOldVersion13 is returned by ExchangeHello when the other side // speaks the older, incompatible version 0.12 of the protocol. ErrTooOldVersion13 = errors.New("the remote device speaks an older version of the protocol (v0.13) not compatible with this version") // ErrUnknownMagic is returned by ExchangeHellow when the other side // speaks something entirely unknown. ErrUnknownMagic = errors.New("the remote device speaks an unknown (newer?) version of the protocol") )
var ( ErrClosed = errors.New("connection closed") ErrTimeout = errors.New("read timeout") ErrSwitchingConnections = errors.New("switching connections") )
var Compression_name = map[int32]string{
0: "METADATA",
1: "NEVER",
2: "ALWAYS",
}
var Compression_value = map[string]int32{
"METADATA": 0,
"NEVER": 1,
"ALWAYS": 2,
}
var ErrorCode_name = map[int32]string{
0: "NO_ERROR",
1: "GENERIC",
2: "NO_SUCH_FILE",
3: "INVALID_FILE",
}
var ErrorCode_value = map[string]int32{
"NO_ERROR": 0,
"GENERIC": 1,
"NO_SUCH_FILE": 2,
"INVALID_FILE": 3,
}
var FileDownloadProgressUpdateType_name = map[int32]string{
0: "APPEND",
1: "FORGET",
}
var FileDownloadProgressUpdateType_value = map[string]int32{
"APPEND": 0,
"FORGET": 1,
}
var FileInfoType_name = map[int32]string{
0: "FILE",
1: "DIRECTORY",
2: "SYMLINK_FILE",
3: "SYMLINK_DIRECTORY",
4: "SYMLINK_UNKNOWN",
}
var FileInfoType_value = map[string]int32{
"FILE": 0,
"DIRECTORY": 1,
"SYMLINK_FILE": 2,
"SYMLINK_DIRECTORY": 3,
"SYMLINK_UNKNOWN": 4,
}
var (
HelloMessageMagic = uint32(0x2EA7D90B)
)
var LocalDeviceID = DeviceID{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}
var MessageCompression_name = map[int32]string{
0: "NONE",
1: "LZ4",
}
var MessageCompression_value = map[string]int32{
"NONE": 0,
"LZ4": 1,
}
var MessageType_name = map[int32]string{
0: "CLUSTER_CONFIG",
1: "INDEX",
2: "INDEX_UPDATE",
3: "REQUEST",
4: "RESPONSE",
5: "DOWNLOAD_PROGRESS",
6: "PING",
7: "CLOSE",
}
var MessageType_value = map[string]int32{
"CLUSTER_CONFIG": 0,
"INDEX": 1,
"INDEX_UPDATE": 2,
"REQUEST": 3,
"RESPONSE": 4,
"DOWNLOAD_PROGRESS": 5,
"PING": 6,
"CLOSE": 7,
}
var (
Version13HelloMagic uint32 = 0x9F79BC40
)
Functions ¶
func IsVersionMismatch ¶ added in v0.13.6
IsVersionMismatch returns true if the error is a reliable indication of a version mismatch that we might want to alert the user about.
func TotalInOut ¶
Types ¶
type BlockInfo ¶
type BlockInfo struct { Offset int64 `protobuf:"varint,1,opt,name=offset,proto3" json:"offset,omitempty"` Size int32 `protobuf:"varint,2,opt,name=size,proto3" json:"size,omitempty"` Hash []byte `protobuf:"bytes,3,opt,name=hash,proto3" json:"hash,omitempty"` }
func (*BlockInfo) Descriptor ¶ added in v0.14.0
func (BlockInfo) IsEmpty ¶ added in v0.12.4
IsEmpty returns true if the block is a full block of zeroes.
func (*BlockInfo) ProtoMessage ¶ added in v0.14.0
func (*BlockInfo) ProtoMessage()
type Close ¶ added in v0.14.0
type Close struct {
Reason string `protobuf:"bytes,1,opt,name=reason,proto3" json:"reason,omitempty"`
}
func (*Close) Descriptor ¶ added in v0.14.0
func (*Close) ProtoMessage ¶ added in v0.14.0
func (*Close) ProtoMessage()
type ClusterConfig ¶ added in v0.14.0
type ClusterConfig struct {
Folders []Folder `protobuf:"bytes,1,rep,name=folders" json:"folders"`
}
func (*ClusterConfig) Descriptor ¶ added in v0.14.0
func (*ClusterConfig) Descriptor() ([]byte, []int)
func (*ClusterConfig) Marshal ¶ added in v0.14.0
func (m *ClusterConfig) Marshal() (data []byte, err error)
func (*ClusterConfig) MarshalTo ¶ added in v0.14.0
func (m *ClusterConfig) MarshalTo(data []byte) (int, error)
func (*ClusterConfig) ProtoMessage ¶ added in v0.14.0
func (*ClusterConfig) ProtoMessage()
func (*ClusterConfig) ProtoSize ¶ added in v0.14.0
func (m *ClusterConfig) ProtoSize() (n int)
func (*ClusterConfig) Reset ¶ added in v0.14.0
func (m *ClusterConfig) Reset()
func (*ClusterConfig) String ¶ added in v0.14.0
func (m *ClusterConfig) String() string
func (*ClusterConfig) Unmarshal ¶ added in v0.14.0
func (m *ClusterConfig) Unmarshal(data []byte) error
type Compression ¶
type Compression int32
const ( CompressMetadata Compression = 0 CompressNever Compression = 1 CompressAlways Compression = 2 )
func (Compression) EnumDescriptor ¶ added in v0.14.0
func (Compression) EnumDescriptor() ([]byte, []int)
func (Compression) GoString ¶
func (c Compression) GoString() string
func (Compression) MarshalText ¶
func (c Compression) MarshalText() ([]byte, error)
func (Compression) String ¶
func (x Compression) String() string
func (*Compression) UnmarshalText ¶
func (c *Compression) UnmarshalText(bs []byte) error
type Connection ¶
type Connection interface { Start() ID() DeviceID Name() string Index(folder string, files []FileInfo) error IndexUpdate(folder string, files []FileInfo) error Request(folder string, name string, offset int64, size int, hash []byte, fromTemporary bool) ([]byte, error) ClusterConfig(config ClusterConfig) DownloadProgress(folder string, updates []FileDownloadProgressUpdate) Statistics() Statistics Closed() bool }
func NewConnection ¶
func NewConnection(deviceID DeviceID, reader io.Reader, writer io.Writer, receiver Model, name string, compress Compression) Connection
type Counter ¶
type Counter struct { ID ShortID `protobuf:"varint,1,opt,name=id,proto3,customtype=ShortID" json:"id"` Value uint64 `protobuf:"varint,2,opt,name=value,proto3" json:"value,omitempty"` }
func (*Counter) Descriptor ¶ added in v0.14.0
func (*Counter) ProtoMessage ¶ added in v0.14.0
func (*Counter) ProtoMessage()
type Device ¶
type Device struct { ID []byte `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Addresses []string `protobuf:"bytes,3,rep,name=addresses" json:"addresses,omitempty"` Compression Compression `protobuf:"varint,4,opt,name=compression,proto3,enum=protocol.Compression" json:"compression,omitempty"` CertName string `protobuf:"bytes,5,opt,name=cert_name,json=certName,proto3" json:"cert_name,omitempty"` MaxSequence int64 `protobuf:"varint,6,opt,name=max_sequence,json=maxSequence,proto3" json:"max_sequence,omitempty"` Introducer bool `protobuf:"varint,7,opt,name=introducer,proto3" json:"introducer,omitempty"` IndexID IndexID `protobuf:"varint,8,opt,name=index_id,json=indexId,proto3,customtype=IndexID" json:"index_id"` }
func (*Device) Descriptor ¶ added in v0.14.0
func (*Device) ProtoMessage ¶ added in v0.14.0
func (*Device) ProtoMessage()
type DeviceID ¶
type DeviceID [32]byte
func DeviceIDFromBytes ¶
func DeviceIDFromString ¶
func NewDeviceID ¶
NewDeviceID generates a new device ID from the raw bytes of a certificate
func (*DeviceID) MarshalText ¶
func (*DeviceID) UnmarshalText ¶
type DownloadProgress ¶ added in v0.14.0
type DownloadProgress struct { Folder string `protobuf:"bytes,1,opt,name=folder,proto3" json:"folder,omitempty"` Updates []FileDownloadProgressUpdate `protobuf:"bytes,2,rep,name=updates" json:"updates"` }
func (*DownloadProgress) Descriptor ¶ added in v0.14.0
func (*DownloadProgress) Descriptor() ([]byte, []int)
func (*DownloadProgress) Marshal ¶ added in v0.14.0
func (m *DownloadProgress) Marshal() (data []byte, err error)
func (*DownloadProgress) MarshalTo ¶ added in v0.14.0
func (m *DownloadProgress) MarshalTo(data []byte) (int, error)
func (*DownloadProgress) ProtoMessage ¶ added in v0.14.0
func (*DownloadProgress) ProtoMessage()
func (*DownloadProgress) ProtoSize ¶ added in v0.14.0
func (m *DownloadProgress) ProtoSize() (n int)
func (*DownloadProgress) Reset ¶ added in v0.14.0
func (m *DownloadProgress) Reset()
func (*DownloadProgress) String ¶ added in v0.14.0
func (m *DownloadProgress) String() string
func (*DownloadProgress) Unmarshal ¶ added in v0.14.0
func (m *DownloadProgress) Unmarshal(data []byte) error
type ErrorCode ¶ added in v0.14.0
type ErrorCode int32
func (ErrorCode) EnumDescriptor ¶ added in v0.14.0
type FileDownloadProgressUpdate ¶ added in v0.13.0
type FileDownloadProgressUpdate struct { UpdateType FileDownloadProgressUpdateType `` /* 137-byte string literal not displayed */ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Version Vector `protobuf:"bytes,3,opt,name=version" json:"version"` BlockIndexes []int32 `protobuf:"varint,4,rep,name=block_indexes,json=blockIndexes" json:"block_indexes,omitempty"` }
func (*FileDownloadProgressUpdate) Descriptor ¶ added in v0.14.0
func (*FileDownloadProgressUpdate) Descriptor() ([]byte, []int)
func (*FileDownloadProgressUpdate) Marshal ¶ added in v0.14.0
func (m *FileDownloadProgressUpdate) Marshal() (data []byte, err error)
func (*FileDownloadProgressUpdate) MarshalTo ¶ added in v0.14.0
func (m *FileDownloadProgressUpdate) MarshalTo(data []byte) (int, error)
func (*FileDownloadProgressUpdate) ProtoMessage ¶ added in v0.14.0
func (*FileDownloadProgressUpdate) ProtoMessage()
func (*FileDownloadProgressUpdate) ProtoSize ¶ added in v0.14.0
func (m *FileDownloadProgressUpdate) ProtoSize() (n int)
func (*FileDownloadProgressUpdate) Reset ¶ added in v0.14.0
func (m *FileDownloadProgressUpdate) Reset()
func (*FileDownloadProgressUpdate) String ¶ added in v0.14.0
func (m *FileDownloadProgressUpdate) String() string
func (*FileDownloadProgressUpdate) Unmarshal ¶ added in v0.14.0
func (m *FileDownloadProgressUpdate) Unmarshal(data []byte) error
type FileDownloadProgressUpdateType ¶ added in v0.14.0
type FileDownloadProgressUpdateType int32
const ( UpdateTypeAppend FileDownloadProgressUpdateType = 0 UpdateTypeForget FileDownloadProgressUpdateType = 1 )
func (FileDownloadProgressUpdateType) EnumDescriptor ¶ added in v0.14.0
func (FileDownloadProgressUpdateType) EnumDescriptor() ([]byte, []int)
func (FileDownloadProgressUpdateType) String ¶ added in v0.14.0
func (x FileDownloadProgressUpdateType) String() string
type FileInfo ¶
type FileInfo struct { Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Type FileInfoType `protobuf:"varint,2,opt,name=type,proto3,enum=protocol.FileInfoType" json:"type,omitempty"` Size int64 `protobuf:"varint,3,opt,name=size,proto3" json:"size,omitempty"` Permissions uint32 `protobuf:"varint,4,opt,name=permissions,proto3" json:"permissions,omitempty"` ModifiedS int64 `protobuf:"varint,5,opt,name=modified_s,json=modifiedS,proto3" json:"modified_s,omitempty"` ModifiedNs int32 `protobuf:"varint,11,opt,name=modified_ns,json=modifiedNs,proto3" json:"modified_ns,omitempty"` Deleted bool `protobuf:"varint,6,opt,name=deleted,proto3" json:"deleted,omitempty"` Invalid bool `protobuf:"varint,7,opt,name=invalid,proto3" json:"invalid,omitempty"` NoPermissions bool `protobuf:"varint,8,opt,name=no_permissions,json=noPermissions,proto3" json:"no_permissions,omitempty"` Version Vector `protobuf:"bytes,9,opt,name=version" json:"version"` Sequence int64 `protobuf:"varint,10,opt,name=sequence,proto3" json:"sequence,omitempty"` Blocks []BlockInfo `protobuf:"bytes,16,rep,name=Blocks,json=blocks" json:"Blocks"` }
func (*FileInfo) Descriptor ¶ added in v0.14.0
func (FileInfo) HasPermissionBits ¶
func (FileInfo) IsDirectory ¶
func (*FileInfo) ProtoMessage ¶ added in v0.14.0
func (*FileInfo) ProtoMessage()
func (FileInfo) WinsConflict ¶
WinsConflict returns true if "f" is the one to choose when it is in conflict with "other".
type FileInfoType ¶ added in v0.14.0
type FileInfoType int32
const ( FileInfoTypeFile FileInfoType = 0 FileInfoTypeDirectory FileInfoType = 1 FileInfoTypeSymlinkFile FileInfoType = 2 FileInfoTypeSymlinkDirectory FileInfoType = 3 FileInfoTypeSymlinkUnknown FileInfoType = 4 )
func (FileInfoType) EnumDescriptor ¶ added in v0.14.0
func (FileInfoType) EnumDescriptor() ([]byte, []int)
func (FileInfoType) String ¶ added in v0.14.0
func (x FileInfoType) String() string
type Folder ¶
type Folder struct { ID string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Label string `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"` ReadOnly bool `protobuf:"varint,3,opt,name=read_only,json=readOnly,proto3" json:"read_only,omitempty"` IgnorePermissions bool `protobuf:"varint,4,opt,name=ignore_permissions,json=ignorePermissions,proto3" json:"ignore_permissions,omitempty"` IgnoreDelete bool `protobuf:"varint,5,opt,name=ignore_delete,json=ignoreDelete,proto3" json:"ignore_delete,omitempty"` DisableTempIndexes bool `protobuf:"varint,6,opt,name=disable_temp_indexes,json=disableTempIndexes,proto3" json:"disable_temp_indexes,omitempty"` Devices []Device `protobuf:"bytes,16,rep,name=devices" json:"devices"` }
func (*Folder) Descriptor ¶ added in v0.14.0
func (*Folder) ProtoMessage ¶ added in v0.14.0
func (*Folder) ProtoMessage()
type Header ¶ added in v0.14.0
type Header struct { Type MessageType `protobuf:"varint,1,opt,name=type,proto3,enum=protocol.MessageType" json:"type,omitempty"` Compression MessageCompression `protobuf:"varint,2,opt,name=compression,proto3,enum=protocol.MessageCompression" json:"compression,omitempty"` }
func (*Header) Descriptor ¶ added in v0.14.0
func (*Header) ProtoMessage ¶ added in v0.14.0
func (*Header) ProtoMessage()
type Hello ¶ added in v0.14.0
type Hello struct { DeviceName string `protobuf:"bytes,1,opt,name=device_name,json=deviceName,proto3" json:"device_name,omitempty"` ClientName string `protobuf:"bytes,2,opt,name=client_name,json=clientName,proto3" json:"client_name,omitempty"` ClientVersion string `protobuf:"bytes,3,opt,name=client_version,json=clientVersion,proto3" json:"client_version,omitempty"` }
func (*Hello) Descriptor ¶ added in v0.14.0
func (*Hello) ProtoMessage ¶ added in v0.14.0
func (*Hello) ProtoMessage()
type HelloIntf ¶ added in v0.14.0
The HelloIntf interface is implemented by the version specific hello message. It knows its magic number and how to serialize itself to a byte buffer.
type HelloResult ¶ added in v0.13.6
The HelloResult is the non version specific interpretation of the other side's Hello message.
func ExchangeHello ¶ added in v0.13.6
func ExchangeHello(c io.ReadWriter, h HelloIntf) (HelloResult, error)
type Index ¶ added in v0.14.0
type Index struct { Folder string `protobuf:"bytes,1,opt,name=folder,proto3" json:"folder,omitempty"` Files []FileInfo `protobuf:"bytes,2,rep,name=files" json:"files"` }
func (*Index) Descriptor ¶ added in v0.14.0
func (*Index) ProtoMessage ¶ added in v0.14.0
func (*Index) ProtoMessage()
type IndexID ¶ added in v0.14.1
type IndexID uint64
func NewIndexID ¶ added in v0.14.1
func NewIndexID() IndexID
type IndexUpdate ¶ added in v0.14.0
type IndexUpdate struct { Folder string `protobuf:"bytes,1,opt,name=folder,proto3" json:"folder,omitempty"` Files []FileInfo `protobuf:"bytes,2,rep,name=files" json:"files"` }
func (*IndexUpdate) Descriptor ¶ added in v0.14.0
func (*IndexUpdate) Descriptor() ([]byte, []int)
func (*IndexUpdate) Marshal ¶ added in v0.14.0
func (m *IndexUpdate) Marshal() (data []byte, err error)
func (*IndexUpdate) MarshalTo ¶ added in v0.14.0
func (m *IndexUpdate) MarshalTo(data []byte) (int, error)
func (*IndexUpdate) ProtoMessage ¶ added in v0.14.0
func (*IndexUpdate) ProtoMessage()
func (*IndexUpdate) ProtoSize ¶ added in v0.14.0
func (m *IndexUpdate) ProtoSize() (n int)
func (*IndexUpdate) Reset ¶ added in v0.14.0
func (m *IndexUpdate) Reset()
func (*IndexUpdate) String ¶ added in v0.14.0
func (m *IndexUpdate) String() string
func (*IndexUpdate) Unmarshal ¶ added in v0.14.0
func (m *IndexUpdate) Unmarshal(data []byte) error
type MessageCompression ¶ added in v0.14.0
type MessageCompression int32
const ( MessageCompressionNone MessageCompression = 0 MessageCompressionLZ4 MessageCompression = 1 )
func (MessageCompression) EnumDescriptor ¶ added in v0.14.0
func (MessageCompression) EnumDescriptor() ([]byte, []int)
func (MessageCompression) String ¶ added in v0.14.0
func (x MessageCompression) String() string
type MessageType ¶ added in v0.14.0
type MessageType int32
func (MessageType) EnumDescriptor ¶ added in v0.14.0
func (MessageType) EnumDescriptor() ([]byte, []int)
func (MessageType) String ¶ added in v0.14.0
func (x MessageType) String() string
type Model ¶
type Model interface { // An index was received from the peer device Index(deviceID DeviceID, folder string, files []FileInfo) // An index update was received from the peer device IndexUpdate(deviceID DeviceID, folder string, files []FileInfo) // A request was made by the peer device Request(deviceID DeviceID, folder string, name string, offset int64, hash []byte, fromTemporary bool, buf []byte) error // A cluster configuration message was received ClusterConfig(deviceID DeviceID, config ClusterConfig) // The peer device closed the connection Closed(conn Connection, err error) // The peer device sent progress updates for the files it is currently downloading DownloadProgress(deviceID DeviceID, folder string, updates []FileDownloadProgressUpdate) }
type Ping ¶ added in v0.14.0
type Ping struct { }
func (*Ping) Descriptor ¶ added in v0.14.0
func (*Ping) ProtoMessage ¶ added in v0.14.0
func (*Ping) ProtoMessage()
type Request ¶ added in v0.14.0
type Request struct { ID int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Folder string `protobuf:"bytes,2,opt,name=folder,proto3" json:"folder,omitempty"` Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` Offset int64 `protobuf:"varint,4,opt,name=offset,proto3" json:"offset,omitempty"` Size int32 `protobuf:"varint,5,opt,name=size,proto3" json:"size,omitempty"` Hash []byte `protobuf:"bytes,6,opt,name=hash,proto3" json:"hash,omitempty"` FromTemporary bool `protobuf:"varint,7,opt,name=from_temporary,json=fromTemporary,proto3" json:"from_temporary,omitempty"` }
func (*Request) Descriptor ¶ added in v0.14.0
func (*Request) ProtoMessage ¶ added in v0.14.0
func (*Request) ProtoMessage()
type Response ¶ added in v0.14.0
type Response struct { ID int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` Code ErrorCode `protobuf:"varint,3,opt,name=code,proto3,enum=protocol.ErrorCode" json:"code,omitempty"` }
func (*Response) Descriptor ¶ added in v0.14.0
func (*Response) ProtoMessage ¶ added in v0.14.0
func (*Response) ProtoMessage()
type Vector ¶
type Vector struct {
Counters []Counter `protobuf:"bytes,1,rep,name=counters" json:"counters"`
}
func (Vector) Concurrent ¶
Concurrent returns true when the two vectors are concurrent.
func (*Vector) Descriptor ¶ added in v0.14.0
func (Vector) GreaterEqual ¶
GreaterEqual returns true when the two vectors are equivalent or v is Greater than b.
func (Vector) LesserEqual ¶
LesserEqual returns true when the two vectors are equivalent or v is Lesser than b.
func (Vector) Merge ¶
Merge returns the vector containing the maximum indexes from v and b. If it is possible, the vector v is updated and returned. If it is not, a copy will be created, updated and returned.
func (*Vector) ProtoMessage ¶ added in v0.14.0
func (*Vector) ProtoMessage()
type Version13HelloMessage ¶ added in v0.13.6
type Version13HelloMessage struct { DeviceName string // max:64 ClientName string // max:64 ClientVersion string // max:64 }
func (Version13HelloMessage) Magic ¶ added in v0.13.6
func (m Version13HelloMessage) Magic() uint32
func (Version13HelloMessage) Marshal ¶ added in v0.13.6
func (m Version13HelloMessage) Marshal() ([]byte, error)
func (Version13HelloMessage) MarshalXDR ¶ added in v0.13.6
func (o Version13HelloMessage) MarshalXDR() ([]byte, error)
func (Version13HelloMessage) MarshalXDRInto ¶ added in v0.13.6
func (o Version13HelloMessage) MarshalXDRInto(m *xdr.Marshaller) error
func (Version13HelloMessage) MustMarshalXDR ¶ added in v0.13.6
func (o Version13HelloMessage) MustMarshalXDR() []byte
func (*Version13HelloMessage) UnmarshalXDR ¶ added in v0.13.6
func (o *Version13HelloMessage) UnmarshalXDR(bs []byte) error
func (*Version13HelloMessage) UnmarshalXDRFrom ¶ added in v0.13.6
func (o *Version13HelloMessage) UnmarshalXDRFrom(u *xdr.Unmarshaller) error
func (Version13HelloMessage) XDRSize ¶ added in v0.13.6
func (o Version13HelloMessage) XDRSize() int