| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- // Copyright (C) 2014 The Syncthing Authors.
- //
- // This Source Code Form is subject to the terms of the Mozilla Public
- // License, v. 2.0. If a copy of the MPL was not distributed with this file,
- // You can obtain one at https://mozilla.org/MPL/2.0/.
- package protocol
- import (
- "fmt"
- "github.com/syncthing/syncthing/internal/gen/bep"
- )
- type Compression = bep.Compression
- const (
- CompressionMetadata = bep.Compression_COMPRESSION_METADATA
- CompressionNever = bep.Compression_COMPRESSION_NEVER
- CompressionAlways = bep.Compression_COMPRESSION_ALWAYS
- )
- type ClusterConfig struct {
- Folders []Folder
- Secondary bool
- }
- func (c *ClusterConfig) toWire() *bep.ClusterConfig {
- folders := make([]*bep.Folder, len(c.Folders))
- for i, f := range c.Folders {
- folders[i] = f.toWire()
- }
- return &bep.ClusterConfig{
- Folders: folders,
- Secondary: c.Secondary,
- }
- }
- func clusterConfigFromWire(w *bep.ClusterConfig) *ClusterConfig {
- if w == nil {
- return nil
- }
- c := &ClusterConfig{
- Secondary: w.Secondary,
- }
- c.Folders = make([]Folder, len(w.Folders))
- for i, f := range w.Folders {
- c.Folders[i] = folderFromWire(f)
- }
- return c
- }
- type Folder struct {
- ID string
- Label string
- ReadOnly bool
- IgnorePermissions bool
- IgnoreDelete bool
- DisableTempIndexes bool
- Paused bool
- Devices []Device
- }
- func (f *Folder) toWire() *bep.Folder {
- devices := make([]*bep.Device, len(f.Devices))
- for i, d := range f.Devices {
- devices[i] = d.toWire()
- }
- return &bep.Folder{
- Id: f.ID,
- Label: f.Label,
- ReadOnly: f.ReadOnly,
- IgnorePermissions: f.IgnorePermissions,
- IgnoreDelete: f.IgnoreDelete,
- DisableTempIndexes: f.DisableTempIndexes,
- Paused: f.Paused,
- Devices: devices,
- }
- }
- func folderFromWire(w *bep.Folder) Folder {
- devices := make([]Device, len(w.Devices))
- for i, d := range w.Devices {
- devices[i] = deviceFromWire(d)
- }
- return Folder{
- ID: w.Id,
- Label: w.Label,
- ReadOnly: w.ReadOnly,
- IgnorePermissions: w.IgnorePermissions,
- IgnoreDelete: w.IgnoreDelete,
- DisableTempIndexes: w.DisableTempIndexes,
- Paused: w.Paused,
- Devices: devices,
- }
- }
- func (f Folder) Description() string {
- // used by logging stuff
- if f.Label == "" {
- return f.ID
- }
- return fmt.Sprintf("%q (%s)", f.Label, f.ID)
- }
- type Device struct {
- ID DeviceID
- Name string
- Addresses []string
- Compression Compression
- CertName string
- MaxSequence int64
- Introducer bool
- IndexID IndexID
- SkipIntroductionRemovals bool
- EncryptionPasswordToken []byte
- }
- func (d *Device) toWire() *bep.Device {
- return &bep.Device{
- Id: d.ID[:],
- Name: d.Name,
- Addresses: d.Addresses,
- Compression: d.Compression,
- CertName: d.CertName,
- MaxSequence: d.MaxSequence,
- Introducer: d.Introducer,
- IndexId: uint64(d.IndexID),
- SkipIntroductionRemovals: d.SkipIntroductionRemovals,
- EncryptionPasswordToken: d.EncryptionPasswordToken,
- }
- }
- func deviceFromWire(w *bep.Device) Device {
- return Device{
- ID: DeviceID(w.Id),
- Name: w.Name,
- Addresses: w.Addresses,
- Compression: w.Compression,
- CertName: w.CertName,
- MaxSequence: w.MaxSequence,
- Introducer: w.Introducer,
- IndexID: IndexID(w.IndexId),
- SkipIntroductionRemovals: w.SkipIntroductionRemovals,
- EncryptionPasswordToken: w.EncryptionPasswordToken,
- }
- }
|