diff --git a/common_test.go b/common_test.go index 9d387825..8d62c8ee 100644 --- a/common_test.go +++ b/common_test.go @@ -11,7 +11,7 @@ import ( type TestModel struct { data []byte - repo string + folder string name string offset int64 size int @@ -24,25 +24,25 @@ func newTestModel() *TestModel { } } -func (t *TestModel) Index(nodeID NodeID, repo string, files []FileInfo) { +func (t *TestModel) Index(deviceID DeviceID, folder string, files []FileInfo) { } -func (t *TestModel) IndexUpdate(nodeID NodeID, repo string, files []FileInfo) { +func (t *TestModel) IndexUpdate(deviceID DeviceID, folder string, files []FileInfo) { } -func (t *TestModel) Request(nodeID NodeID, repo, name string, offset int64, size int) ([]byte, error) { - t.repo = repo +func (t *TestModel) Request(deviceID DeviceID, folder, name string, offset int64, size int) ([]byte, error) { + t.folder = folder t.name = name t.offset = offset t.size = size return t.data, nil } -func (t *TestModel) Close(nodeID NodeID, err error) { +func (t *TestModel) Close(deviceID DeviceID, err error) { close(t.closedCh) } -func (t *TestModel) ClusterConfig(nodeID NodeID, config ClusterConfigMessage) { +func (t *TestModel) ClusterConfig(deviceID DeviceID, config ClusterConfigMessage) { } func (t *TestModel) isClosed() bool { diff --git a/nodeid.go b/deviceid.go similarity index 74% rename from nodeid.go rename to deviceid.go index 9079781b..f4427dc6 100644 --- a/nodeid.go +++ b/deviceid.go @@ -16,36 +16,36 @@ import ( "github.com/syncthing/syncthing/internal/luhn" ) -type NodeID [32]byte +type DeviceID [32]byte -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} +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} -// NewNodeID generates a new node ID from the raw bytes of a certificate -func NewNodeID(rawCert []byte) NodeID { - var n NodeID +// NewDeviceID generates a new device ID from the raw bytes of a certificate +func NewDeviceID(rawCert []byte) DeviceID { + var n DeviceID hf := sha256.New() hf.Write(rawCert) hf.Sum(n[:0]) return n } -func NodeIDFromString(s string) (NodeID, error) { - var n NodeID +func DeviceIDFromString(s string) (DeviceID, error) { + var n DeviceID err := n.UnmarshalText([]byte(s)) return n, err } -func NodeIDFromBytes(bs []byte) NodeID { - var n NodeID +func DeviceIDFromBytes(bs []byte) DeviceID { + var n DeviceID if len(bs) != len(n) { - panic("incorrect length of byte slice representing node ID") + panic("incorrect length of byte slice representing device ID") } copy(n[:], bs) return n } -// String returns the canonical string representation of the node ID -func (n NodeID) String() string { +// String returns the canonical string representation of the device ID +func (n DeviceID) String() string { id := base32.StdEncoding.EncodeToString(n[:]) id = strings.Trim(id, "=") id, err := luhnify(id) @@ -57,23 +57,23 @@ func (n NodeID) String() string { return id } -func (n NodeID) GoString() string { +func (n DeviceID) GoString() string { return n.String() } -func (n NodeID) Compare(other NodeID) int { +func (n DeviceID) Compare(other DeviceID) int { return bytes.Compare(n[:], other[:]) } -func (n NodeID) Equals(other NodeID) bool { +func (n DeviceID) Equals(other DeviceID) bool { return bytes.Compare(n[:], other[:]) == 0 } -func (n *NodeID) MarshalText() ([]byte, error) { +func (n *DeviceID) MarshalText() ([]byte, error) { return []byte(n.String()), nil } -func (n *NodeID) UnmarshalText(bs []byte) error { +func (n *DeviceID) UnmarshalText(bs []byte) error { id := string(bs) id = strings.Trim(id, "=") id = strings.ToUpper(id) @@ -98,7 +98,7 @@ func (n *NodeID) UnmarshalText(bs []byte) error { copy(n[:], dec) return nil default: - return errors.New("node ID invalid: incorrect length") + return errors.New("device ID invalid: incorrect length") } } diff --git a/nodeid_test.go b/deviceid_test.go similarity index 82% rename from nodeid_test.go rename to deviceid_test.go index 5b861b6d..069e4b98 100644 --- a/nodeid_test.go +++ b/deviceid_test.go @@ -20,14 +20,14 @@ var formatCases = []string{ "p561017mzjnu2yiqgdreydm2mgtimgl3bxnpq6w5bmt88z4tjxzwicq2", } -func TestFormatNodeID(t *testing.T) { +func TestFormatDeviceID(t *testing.T) { for i, tc := range formatCases { - var id NodeID + var id DeviceID err := id.UnmarshalText([]byte(tc)) if err != nil { t.Errorf("#%d UnmarshalText(%q); %v", i, tc, err) } else if f := id.String(); f != formatted { - t.Errorf("#%d FormatNodeID(%q)\n\t%q !=\n\t%q", i, tc, f, formatted) + t.Errorf("#%d FormatDeviceID(%q)\n\t%q !=\n\t%q", i, tc, f, formatted) } } } @@ -46,20 +46,20 @@ var validateCases = []struct { {"p56ioi7mzjnu2iqgdreydm2mgtmgl3bxnpq6w5btbbz4tjxzwicqCCCC", false}, } -func TestValidateNodeID(t *testing.T) { +func TestValidateDeviceID(t *testing.T) { for _, tc := range validateCases { - var id NodeID + var id DeviceID err := id.UnmarshalText([]byte(tc.s)) if (err == nil && !tc.ok) || (err != nil && tc.ok) { - t.Errorf("ValidateNodeID(%q); %v != %v", tc.s, err, tc.ok) + t.Errorf("ValidateDeviceID(%q); %v != %v", tc.s, err, tc.ok) } } } -func TestMarshallingNodeID(t *testing.T) { - n0 := NodeID{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 10, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32} - n1 := NodeID{} - n2 := NodeID{} +func TestMarshallingDeviceID(t *testing.T) { + n0 := DeviceID{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 10, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32} + n1 := DeviceID{} + n2 := DeviceID{} bs, _ := n0.MarshalText() n1.UnmarshalText(bs) diff --git a/message.go b/message.go index 779817a7..09cb323c 100644 --- a/message.go +++ b/message.go @@ -7,7 +7,7 @@ package protocol import "fmt" type IndexMessage struct { - Repository string // max:64 + Folder string // max:64 Files []FileInfo } @@ -90,7 +90,7 @@ func (b BlockInfo) String() string { } type RequestMessage struct { - Repository string // max:64 + Folder string // max:64 Name string // max:8192 Offset uint64 Size uint32 @@ -103,7 +103,7 @@ type ResponseMessage struct { type ClusterConfigMessage struct { ClientName string // max:64 ClientVersion string // max:64 - Repositories []Repository // max:64 + Folders []Folder // max:64 Options []Option // max:64 } @@ -116,12 +116,12 @@ func (o *ClusterConfigMessage) GetOption(key string) string { return "" } -type Repository struct { +type Folder struct { ID string // max:64 - Nodes []Node // max:64 + Devices []Device // max:64 } -type Node struct { +type Device struct { ID []byte // max:32 Flags uint32 MaxLocalVersion uint64 diff --git a/message_xdr.go b/message_xdr.go index 11a11da3..c7f16a17 100644 --- a/message_xdr.go +++ b/message_xdr.go @@ -18,10 +18,10 @@ IndexMessage Structure: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -| Length of Repository | +| Length of Folder | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ / / -\ Repository (variable length) \ +\ Folder (variable length) \ / / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Number of Files | @@ -33,7 +33,7 @@ IndexMessage Structure: struct IndexMessage { - string Repository<64>; + string Folder<64>; FileInfo Files<>; } @@ -56,10 +56,10 @@ func (o IndexMessage) AppendXDR(bs []byte) []byte { } func (o IndexMessage) encodeXDR(xw *xdr.Writer) (int, error) { - if len(o.Repository) > 64 { + if len(o.Folder) > 64 { return xw.Tot(), xdr.ErrElementSizeExceeded } - xw.WriteString(o.Repository) + xw.WriteString(o.Folder) xw.WriteUint32(uint32(len(o.Files))) for i := range o.Files { _, err := o.Files[i].encodeXDR(xw) @@ -82,7 +82,7 @@ func (o *IndexMessage) UnmarshalXDR(bs []byte) error { } func (o *IndexMessage) decodeXDR(xr *xdr.Reader) error { - o.Repository = xr.ReadStringMax(64) + o.Folder = xr.ReadStringMax(64) _FilesSize := int(xr.ReadUint32()) o.Files = make([]FileInfo, _FilesSize) for i := range o.Files { @@ -362,10 +362,10 @@ RequestMessage Structure: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -| Length of Repository | +| Length of Folder | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ / / -\ Repository (variable length) \ +\ Folder (variable length) \ / / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Length of Name | @@ -383,7 +383,7 @@ RequestMessage Structure: struct RequestMessage { - string Repository<64>; + string Folder<64>; string Name<8192>; unsigned hyper Offset; unsigned int Size; @@ -408,10 +408,10 @@ func (o RequestMessage) AppendXDR(bs []byte) []byte { } func (o RequestMessage) encodeXDR(xw *xdr.Writer) (int, error) { - if len(o.Repository) > 64 { + if len(o.Folder) > 64 { return xw.Tot(), xdr.ErrElementSizeExceeded } - xw.WriteString(o.Repository) + xw.WriteString(o.Folder) if len(o.Name) > 8192 { return xw.Tot(), xdr.ErrElementSizeExceeded } @@ -433,7 +433,7 @@ func (o *RequestMessage) UnmarshalXDR(bs []byte) error { } func (o *RequestMessage) decodeXDR(xr *xdr.Reader) error { - o.Repository = xr.ReadStringMax(64) + o.Folder = xr.ReadStringMax(64) o.Name = xr.ReadStringMax(8192) o.Offset = xr.ReadUint64() o.Size = xr.ReadUint32() @@ -517,10 +517,10 @@ ClusterConfigMessage Structure: \ Client Version (variable length) \ / / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -| Number of Repositories | +| Number of Folders | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ / / -\ Zero or more Repository Structures \ +\ Zero or more Folder Structures \ / / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Number of Options | @@ -534,7 +534,7 @@ ClusterConfigMessage Structure: struct ClusterConfigMessage { string ClientName<64>; string ClientVersion<64>; - Repository Repositories<64>; + Folder Folders<64>; Option Options<64>; } @@ -565,12 +565,12 @@ func (o ClusterConfigMessage) encodeXDR(xw *xdr.Writer) (int, error) { return xw.Tot(), xdr.ErrElementSizeExceeded } xw.WriteString(o.ClientVersion) - if len(o.Repositories) > 64 { + if len(o.Folders) > 64 { return xw.Tot(), xdr.ErrElementSizeExceeded } - xw.WriteUint32(uint32(len(o.Repositories))) - for i := range o.Repositories { - _, err := o.Repositories[i].encodeXDR(xw) + xw.WriteUint32(uint32(len(o.Folders))) + for i := range o.Folders { + _, err := o.Folders[i].encodeXDR(xw) if err != nil { return xw.Tot(), err } @@ -602,13 +602,13 @@ func (o *ClusterConfigMessage) UnmarshalXDR(bs []byte) error { func (o *ClusterConfigMessage) decodeXDR(xr *xdr.Reader) error { o.ClientName = xr.ReadStringMax(64) o.ClientVersion = xr.ReadStringMax(64) - _RepositoriesSize := int(xr.ReadUint32()) - if _RepositoriesSize > 64 { + _FoldersSize := int(xr.ReadUint32()) + if _FoldersSize > 64 { return xdr.ErrElementSizeExceeded } - o.Repositories = make([]Repository, _RepositoriesSize) - for i := range o.Repositories { - (&o.Repositories[i]).decodeXDR(xr) + o.Folders = make([]Folder, _FoldersSize) + for i := range o.Folders { + (&o.Folders[i]).decodeXDR(xr) } _OptionsSize := int(xr.ReadUint32()) if _OptionsSize > 64 { @@ -623,7 +623,7 @@ func (o *ClusterConfigMessage) decodeXDR(xr *xdr.Reader) error { /* -Repository Structure: +Folder Structure: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 @@ -634,48 +634,48 @@ Repository Structure: \ ID (variable length) \ / / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -| Number of Nodes | +| Number of Devices | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ / / -\ Zero or more Node Structures \ +\ Zero or more Device Structures \ / / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -struct Repository { +struct Folder { string ID<64>; - Node Nodes<64>; + Device Devices<64>; } */ -func (o Repository) EncodeXDR(w io.Writer) (int, error) { +func (o Folder) EncodeXDR(w io.Writer) (int, error) { var xw = xdr.NewWriter(w) return o.encodeXDR(xw) } -func (o Repository) MarshalXDR() []byte { +func (o Folder) MarshalXDR() []byte { return o.AppendXDR(make([]byte, 0, 128)) } -func (o Repository) AppendXDR(bs []byte) []byte { +func (o Folder) AppendXDR(bs []byte) []byte { var aw = xdr.AppendWriter(bs) var xw = xdr.NewWriter(&aw) o.encodeXDR(xw) return []byte(aw) } -func (o Repository) encodeXDR(xw *xdr.Writer) (int, error) { +func (o Folder) encodeXDR(xw *xdr.Writer) (int, error) { if len(o.ID) > 64 { return xw.Tot(), xdr.ErrElementSizeExceeded } xw.WriteString(o.ID) - if len(o.Nodes) > 64 { + if len(o.Devices) > 64 { return xw.Tot(), xdr.ErrElementSizeExceeded } - xw.WriteUint32(uint32(len(o.Nodes))) - for i := range o.Nodes { - _, err := o.Nodes[i].encodeXDR(xw) + xw.WriteUint32(uint32(len(o.Devices))) + for i := range o.Devices { + _, err := o.Devices[i].encodeXDR(xw) if err != nil { return xw.Tot(), err } @@ -683,33 +683,33 @@ func (o Repository) encodeXDR(xw *xdr.Writer) (int, error) { return xw.Tot(), xw.Error() } -func (o *Repository) DecodeXDR(r io.Reader) error { +func (o *Folder) DecodeXDR(r io.Reader) error { xr := xdr.NewReader(r) return o.decodeXDR(xr) } -func (o *Repository) UnmarshalXDR(bs []byte) error { +func (o *Folder) UnmarshalXDR(bs []byte) error { var br = bytes.NewReader(bs) var xr = xdr.NewReader(br) return o.decodeXDR(xr) } -func (o *Repository) decodeXDR(xr *xdr.Reader) error { +func (o *Folder) decodeXDR(xr *xdr.Reader) error { o.ID = xr.ReadStringMax(64) - _NodesSize := int(xr.ReadUint32()) - if _NodesSize > 64 { + _DevicesSize := int(xr.ReadUint32()) + if _DevicesSize > 64 { return xdr.ErrElementSizeExceeded } - o.Nodes = make([]Node, _NodesSize) - for i := range o.Nodes { - (&o.Nodes[i]).decodeXDR(xr) + o.Devices = make([]Device, _DevicesSize) + for i := range o.Devices { + (&o.Devices[i]).decodeXDR(xr) } return xr.Error() } /* -Node Structure: +Device Structure: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 @@ -728,7 +728,7 @@ Node Structure: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -struct Node { +struct Device { opaque ID<32>; unsigned int Flags; unsigned hyper MaxLocalVersion; @@ -736,23 +736,23 @@ struct Node { */ -func (o Node) EncodeXDR(w io.Writer) (int, error) { +func (o Device) EncodeXDR(w io.Writer) (int, error) { var xw = xdr.NewWriter(w) return o.encodeXDR(xw) } -func (o Node) MarshalXDR() []byte { +func (o Device) MarshalXDR() []byte { return o.AppendXDR(make([]byte, 0, 128)) } -func (o Node) AppendXDR(bs []byte) []byte { +func (o Device) AppendXDR(bs []byte) []byte { var aw = xdr.AppendWriter(bs) var xw = xdr.NewWriter(&aw) o.encodeXDR(xw) return []byte(aw) } -func (o Node) encodeXDR(xw *xdr.Writer) (int, error) { +func (o Device) encodeXDR(xw *xdr.Writer) (int, error) { if len(o.ID) > 32 { return xw.Tot(), xdr.ErrElementSizeExceeded } @@ -762,18 +762,18 @@ func (o Node) encodeXDR(xw *xdr.Writer) (int, error) { return xw.Tot(), xw.Error() } -func (o *Node) DecodeXDR(r io.Reader) error { +func (o *Device) DecodeXDR(r io.Reader) error { xr := xdr.NewReader(r) return o.decodeXDR(xr) } -func (o *Node) UnmarshalXDR(bs []byte) error { +func (o *Device) UnmarshalXDR(bs []byte) error { var br = bytes.NewReader(bs) var xr = xdr.NewReader(br) return o.decodeXDR(xr) } -func (o *Node) decodeXDR(xr *xdr.Reader) error { +func (o *Device) decodeXDR(xr *xdr.Reader) error { o.ID = xr.ReadBytesMax(32) o.Flags = xr.ReadUint32() o.MaxLocalVersion = xr.ReadUint64() diff --git a/nativemodel_darwin.go b/nativemodel_darwin.go index 9ac402fe..8e8c7a42 100644 --- a/nativemodel_darwin.go +++ b/nativemodel_darwin.go @@ -14,29 +14,29 @@ type nativeModel struct { next Model } -func (m nativeModel) Index(nodeID NodeID, repo string, files []FileInfo) { +func (m nativeModel) Index(deviceID DeviceID, folder string, files []FileInfo) { for i := range files { files[i].Name = norm.NFD.String(files[i].Name) } - m.next.Index(nodeID, repo, files) + m.next.Index(deviceID, folder, files) } -func (m nativeModel) IndexUpdate(nodeID NodeID, repo string, files []FileInfo) { +func (m nativeModel) IndexUpdate(deviceID DeviceID, folder string, files []FileInfo) { for i := range files { files[i].Name = norm.NFD.String(files[i].Name) } - m.next.IndexUpdate(nodeID, repo, files) + m.next.IndexUpdate(deviceID, folder, files) } -func (m nativeModel) Request(nodeID NodeID, repo string, name string, offset int64, size int) ([]byte, error) { +func (m nativeModel) Request(deviceID DeviceID, folder string, name string, offset int64, size int) ([]byte, error) { name = norm.NFD.String(name) - return m.next.Request(nodeID, repo, name, offset, size) + return m.next.Request(deviceID, folder, name, offset, size) } -func (m nativeModel) ClusterConfig(nodeID NodeID, config ClusterConfigMessage) { - m.next.ClusterConfig(nodeID, config) +func (m nativeModel) ClusterConfig(deviceID DeviceID, config ClusterConfigMessage) { + m.next.ClusterConfig(deviceID, config) } -func (m nativeModel) Close(nodeID NodeID, err error) { - m.next.Close(nodeID, err) +func (m nativeModel) Close(deviceID DeviceID, err error) { + m.next.Close(deviceID, err) } diff --git a/nativemodel_unix.go b/nativemodel_unix.go index 23fbe0b6..77d335fa 100644 --- a/nativemodel_unix.go +++ b/nativemodel_unix.go @@ -12,22 +12,22 @@ type nativeModel struct { next Model } -func (m nativeModel) Index(nodeID NodeID, repo string, files []FileInfo) { - m.next.Index(nodeID, repo, files) +func (m nativeModel) Index(deviceID DeviceID, folder string, files []FileInfo) { + m.next.Index(deviceID, folder, files) } -func (m nativeModel) IndexUpdate(nodeID NodeID, repo string, files []FileInfo) { - m.next.IndexUpdate(nodeID, repo, files) +func (m nativeModel) IndexUpdate(deviceID DeviceID, folder string, files []FileInfo) { + m.next.IndexUpdate(deviceID, folder, files) } -func (m nativeModel) Request(nodeID NodeID, repo string, name string, offset int64, size int) ([]byte, error) { - return m.next.Request(nodeID, repo, name, offset, size) +func (m nativeModel) Request(deviceID DeviceID, folder string, name string, offset int64, size int) ([]byte, error) { + return m.next.Request(deviceID, folder, name, offset, size) } -func (m nativeModel) ClusterConfig(nodeID NodeID, config ClusterConfigMessage) { - m.next.ClusterConfig(nodeID, config) +func (m nativeModel) ClusterConfig(deviceID DeviceID, config ClusterConfigMessage) { + m.next.ClusterConfig(deviceID, config) } -func (m nativeModel) Close(nodeID NodeID, err error) { - m.next.Close(nodeID, err) +func (m nativeModel) Close(deviceID DeviceID, err error) { + m.next.Close(deviceID, err) } diff --git a/nativemodel_windows.go b/nativemodel_windows.go index 9841d63f..252860ea 100644 --- a/nativemodel_windows.go +++ b/nativemodel_windows.go @@ -26,7 +26,7 @@ type nativeModel struct { next Model } -func (m nativeModel) Index(nodeID NodeID, repo string, files []FileInfo) { +func (m nativeModel) Index(deviceID DeviceID, folder string, files []FileInfo) { for i, f := range files { if strings.ContainsAny(f.Name, disallowedCharacters) { if f.IsDeleted() { @@ -39,10 +39,10 @@ func (m nativeModel) Index(nodeID NodeID, repo string, files []FileInfo) { } files[i].Name = filepath.FromSlash(f.Name) } - m.next.Index(nodeID, repo, files) + m.next.Index(deviceID, folder, files) } -func (m nativeModel) IndexUpdate(nodeID NodeID, repo string, files []FileInfo) { +func (m nativeModel) IndexUpdate(deviceID DeviceID, folder string, files []FileInfo) { for i, f := range files { if strings.ContainsAny(f.Name, disallowedCharacters) { if f.IsDeleted() { @@ -55,18 +55,18 @@ func (m nativeModel) IndexUpdate(nodeID NodeID, repo string, files []FileInfo) { } files[i].Name = filepath.FromSlash(files[i].Name) } - m.next.IndexUpdate(nodeID, repo, files) + m.next.IndexUpdate(deviceID, folder, files) } -func (m nativeModel) Request(nodeID NodeID, repo string, name string, offset int64, size int) ([]byte, error) { +func (m nativeModel) Request(deviceID DeviceID, folder string, name string, offset int64, size int) ([]byte, error) { name = filepath.FromSlash(name) - return m.next.Request(nodeID, repo, name, offset, size) + return m.next.Request(deviceID, folder, name, offset, size) } -func (m nativeModel) ClusterConfig(nodeID NodeID, config ClusterConfigMessage) { - m.next.ClusterConfig(nodeID, config) +func (m nativeModel) ClusterConfig(deviceID DeviceID, config ClusterConfigMessage) { + m.next.ClusterConfig(deviceID, config) } -func (m nativeModel) Close(nodeID NodeID, err error) { - m.next.Close(nodeID, err) +func (m nativeModel) Close(deviceID DeviceID, err error) { + m.next.Close(deviceID, err) } diff --git a/protocol.go b/protocol.go index 86fd6199..26d75de4 100644 --- a/protocol.go +++ b/protocol.go @@ -57,30 +57,30 @@ var ( ) 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) + // 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, 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) + ClusterConfig(deviceID DeviceID, config ClusterConfigMessage) + // The peer device closed the connection + Close(deviceID DeviceID, err error) } type Connection interface { - ID() NodeID + ID() DeviceID 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) + Index(folder string, files []FileInfo) error + IndexUpdate(folder string, files []FileInfo) error + Request(folder string, name string, offset int64, size int) ([]byte, error) ClusterConfig(config ClusterConfigMessage) Statistics() Statistics } type rawConnection struct { - id NodeID + id DeviceID name string receiver Model state int @@ -123,7 +123,7 @@ const ( pingIdleTime = 60 * time.Second ) -func NewConnection(nodeID NodeID, reader io.Reader, writer io.Writer, receiver Model, name string, compress bool) Connection { +func NewConnection(deviceID DeviceID, reader io.Reader, writer io.Writer, receiver Model, name string, compress bool) Connection { cr := &countingReader{Reader: reader} cw := &countingWriter{Writer: writer} @@ -132,7 +132,7 @@ func NewConnection(nodeID NodeID, reader io.Reader, writer io.Writer, receiver M compThres = 128 // compress messages that are 128 bytes long or larger } c := rawConnection{ - id: nodeID, + id: deviceID, name: name, receiver: nativeModel{receiver}, state: stateInitial, @@ -152,7 +152,7 @@ func NewConnection(nodeID NodeID, reader io.Reader, writer io.Writer, receiver M return wireFormatConnection{&c} } -func (c *rawConnection) ID() NodeID { +func (c *rawConnection) ID() DeviceID { return c.id } @@ -160,34 +160,34 @@ func (c *rawConnection) Name() string { return c.name } -// Index writes the list of file information to the connected peer node -func (c *rawConnection) Index(repo string, idx []FileInfo) error { +// Index writes the list of file information to the connected peer device +func (c *rawConnection) Index(folder string, idx []FileInfo) error { select { case <-c.closed: return ErrClosed default: } c.idxMut.Lock() - c.send(-1, messageTypeIndex, IndexMessage{repo, idx}) + c.send(-1, messageTypeIndex, IndexMessage{folder, idx}) c.idxMut.Unlock() return nil } -// IndexUpdate writes the list of file information to the connected peer node as an update -func (c *rawConnection) IndexUpdate(repo string, idx []FileInfo) error { +// IndexUpdate writes the list of file information to the connected peer device as an update +func (c *rawConnection) IndexUpdate(folder string, idx []FileInfo) error { select { case <-c.closed: return ErrClosed default: } c.idxMut.Lock() - c.send(-1, messageTypeIndexUpdate, IndexMessage{repo, idx}) + c.send(-1, messageTypeIndexUpdate, IndexMessage{folder, idx}) c.idxMut.Unlock() return nil } // Request returns the bytes for the specified block after fetching them from the connected peer. -func (c *rawConnection) Request(repo string, name string, offset int64, size int) ([]byte, error) { +func (c *rawConnection) Request(folder string, name string, offset int64, size int) ([]byte, error) { var id int select { case id = <-c.nextID: @@ -203,7 +203,7 @@ func (c *rawConnection) Request(repo string, name string, offset int64, size int c.awaiting[id] = rc c.awaitingMut.Unlock() - ok := c.send(id, messageTypeRequest, RequestMessage{repo, name, uint64(offset), uint32(size)}) + ok := c.send(id, messageTypeRequest, RequestMessage{folder, name, uint64(offset), uint32(size)}) if !ok { return nil, ErrClosed } @@ -399,20 +399,20 @@ func (c *rawConnection) readMessage() (hdr header, msg encodable, err error) { func (c *rawConnection) handleIndex(im IndexMessage) { if debug { - l.Debugf("Index(%v, %v, %d files)", c.id, im.Repository, len(im.Files)) + l.Debugf("Index(%v, %v, %d files)", c.id, im.Folder, len(im.Files)) } - c.receiver.Index(c.id, im.Repository, im.Files) + c.receiver.Index(c.id, im.Folder, im.Files) } func (c *rawConnection) handleIndexUpdate(im IndexMessage) { if debug { - l.Debugf("queueing IndexUpdate(%v, %v, %d files)", c.id, im.Repository, len(im.Files)) + l.Debugf("queueing IndexUpdate(%v, %v, %d files)", c.id, im.Folder, len(im.Files)) } - c.receiver.IndexUpdate(c.id, im.Repository, im.Files) + c.receiver.IndexUpdate(c.id, im.Folder, im.Files) } func (c *rawConnection) handleRequest(msgID int, req RequestMessage) { - data, _ := c.receiver.Request(c.id, req.Repository, req.Name, int64(req.Offset), int(req.Size)) + data, _ := c.receiver.Request(c.id, req.Folder, req.Name, int64(req.Offset), int(req.Size)) c.send(msgID, messageTypeResponse, ResponseMessage{data}) } diff --git a/protocol_test.go b/protocol_test.go index 56a46f2e..ee858758 100644 --- a/protocol_test.go +++ b/protocol_test.go @@ -21,8 +21,8 @@ import ( ) var ( - c0ID = NewNodeID([]byte{1}) - c1ID = NewNodeID([]byte{2}) + c0ID = NewDeviceID([]byte{1}) + c1ID = NewDeviceID([]byte{2}) ) func TestHeaderFunctions(t *testing.T) { @@ -140,8 +140,8 @@ func TestPingErr(t *testing.T) { // if string(d) != "response data" { // t.Fatalf("Incorrect response data %q", string(d)) // } -// if m0.repo != "default" { -// t.Fatalf("Incorrect repo %q", m0.repo) +// if m0.folder != "default" { +// t.Fatalf("Incorrect folder %q", m0.folder) // } // if m0.name != "tn" { // t.Fatalf("Incorrect name %q", m0.name) @@ -240,13 +240,13 @@ func TestClose(t *testing.T) { func TestElementSizeExceededNested(t *testing.T) { m := ClusterConfigMessage{ - Repositories: []Repository{ + Folders: []Folder{ {ID: "longstringlongstringlongstringinglongstringlongstringlonlongstringlongstringlon"}, }, } _, err := m.EncodeXDR(ioutil.Discard) if err == nil { - t.Errorf("ID length %d > max 64, but no error", len(m.Repositories[0].ID)) + t.Errorf("ID length %d > max 64, but no error", len(m.Folders[0].ID)) } } diff --git a/wireformat.go b/wireformat.go index 987c03ef..ebd714cd 100644 --- a/wireformat.go +++ b/wireformat.go @@ -14,7 +14,7 @@ type wireFormatConnection struct { next Connection } -func (c wireFormatConnection) ID() NodeID { +func (c wireFormatConnection) ID() DeviceID { return c.next.ID() } @@ -22,7 +22,7 @@ func (c wireFormatConnection) Name() string { return c.next.Name() } -func (c wireFormatConnection) Index(repo string, fs []FileInfo) error { +func (c wireFormatConnection) Index(folder string, fs []FileInfo) error { var myFs = make([]FileInfo, len(fs)) copy(myFs, fs) @@ -30,10 +30,10 @@ func (c wireFormatConnection) Index(repo string, fs []FileInfo) error { myFs[i].Name = norm.NFC.String(filepath.ToSlash(myFs[i].Name)) } - return c.next.Index(repo, myFs) + return c.next.Index(folder, myFs) } -func (c wireFormatConnection) IndexUpdate(repo string, fs []FileInfo) error { +func (c wireFormatConnection) IndexUpdate(folder string, fs []FileInfo) error { var myFs = make([]FileInfo, len(fs)) copy(myFs, fs) @@ -41,12 +41,12 @@ func (c wireFormatConnection) IndexUpdate(repo string, fs []FileInfo) error { myFs[i].Name = norm.NFC.String(filepath.ToSlash(myFs[i].Name)) } - return c.next.IndexUpdate(repo, myFs) + return c.next.IndexUpdate(folder, myFs) } -func (c wireFormatConnection) Request(repo, name string, offset int64, size int) ([]byte, error) { +func (c wireFormatConnection) Request(folder, name string, offset int64, size int) ([]byte, error) { name = norm.NFC.String(filepath.ToSlash(name)) - return c.next.Request(repo, name, offset, size) + return c.next.Request(folder, name, offset, size) } func (c wireFormatConnection) ClusterConfig(config ClusterConfigMessage) {