mirror of
https://github.com/octoleo/syncthing.git
synced 2025-01-02 22:50:18 +00:00
104 lines
2.6 KiB
Protocol Buffer
104 lines
2.6 KiB
Protocol Buffer
|
syntax = "proto3";
|
||
|
|
||
|
package dbproto;
|
||
|
|
||
|
import "bep/bep.proto";
|
||
|
import "google/protobuf/timestamp.proto";
|
||
|
|
||
|
|
||
|
// Same as bep.FileInfo, but without blocks
|
||
|
message FileInfoTruncated {
|
||
|
string name = 1;
|
||
|
int64 size = 3;
|
||
|
int64 modified_s = 5;
|
||
|
uint64 modified_by = 12;
|
||
|
bep.Vector version = 9;
|
||
|
int64 sequence = 10;
|
||
|
reserved 16; // blocks
|
||
|
string symlink_target = 17;
|
||
|
bytes blocks_hash = 18;
|
||
|
bytes encrypted = 19;
|
||
|
bep.FileInfoType type = 2;
|
||
|
uint32 permissions = 4;
|
||
|
int32 modified_ns = 11;
|
||
|
int32 block_size = 13;
|
||
|
bep.PlatformData platform = 14;
|
||
|
|
||
|
// The local_flags fields stores flags that are relevant to the local
|
||
|
// host only. It is not part of the protocol, doesn't get sent or
|
||
|
// received (we make sure to zero it), nonetheless we need it on our
|
||
|
// struct and to be able to serialize it to/from the database.
|
||
|
uint32 local_flags = 1000;
|
||
|
|
||
|
// The version_hash is an implementation detail and not part of the wire
|
||
|
// format.
|
||
|
bytes version_hash = 1001;
|
||
|
|
||
|
// The time when the inode was last changed (i.e., permissions, xattrs
|
||
|
// etc changed). This is host-local, not sent over the wire.
|
||
|
int64 inode_change_ns = 1002;
|
||
|
|
||
|
// The size of the data appended to the encrypted file on disk. This is
|
||
|
// host-local, not sent over the wire.
|
||
|
int32 encryption_trailer_size = 1003;
|
||
|
|
||
|
bool deleted = 6;
|
||
|
bool invalid = 7;
|
||
|
bool no_permissions = 8;
|
||
|
}
|
||
|
|
||
|
|
||
|
message FileVersion {
|
||
|
bep.Vector version = 1;
|
||
|
bool deleted = 2;
|
||
|
repeated bytes devices = 3;
|
||
|
repeated bytes invalid_devices = 4;
|
||
|
}
|
||
|
|
||
|
message VersionList {
|
||
|
repeated FileVersion versions = 1;
|
||
|
}
|
||
|
|
||
|
// BlockList is the structure used to store block lists
|
||
|
message BlockList {
|
||
|
repeated bep.BlockInfo blocks = 1;
|
||
|
}
|
||
|
|
||
|
// IndirectionHashesOnly is used to only unmarshal the indirection hashes
|
||
|
// from a FileInfo
|
||
|
message IndirectionHashesOnly {
|
||
|
bytes blocks_hash = 18;
|
||
|
bytes version_hash = 1001;
|
||
|
}
|
||
|
|
||
|
// For each folder and device we keep one of these to track the current
|
||
|
// counts and sequence. We also keep one for the global state of the folder.
|
||
|
message Counts {
|
||
|
int32 files = 1;
|
||
|
int32 directories = 2;
|
||
|
int32 symlinks = 3;
|
||
|
int32 deleted = 4;
|
||
|
int64 bytes = 5;
|
||
|
int64 sequence = 6; // zero for the global state
|
||
|
bytes device_id = 17; // device ID for remote devices, or special values for local/global
|
||
|
uint32 local_flags = 18; // the local flag for this count bucket
|
||
|
}
|
||
|
|
||
|
message CountsSet {
|
||
|
repeated Counts counts = 1;
|
||
|
int64 created = 2; // unix nanos
|
||
|
}
|
||
|
|
||
|
message ObservedFolder {
|
||
|
google.protobuf.Timestamp time = 1;
|
||
|
string label = 2;
|
||
|
bool receive_encrypted = 3;
|
||
|
bool remote_encrypted = 4;
|
||
|
}
|
||
|
|
||
|
message ObservedDevice {
|
||
|
google.protobuf.Timestamp time = 1;
|
||
|
string name = 2;
|
||
|
string address = 3;
|
||
|
}
|