mirror of
https://github.com/octoleo/syncthing.git
synced 2024-12-23 03:18:59 +00:00
325c3c1fa7
* lib/db, lib/protocol: Compact FileInfo and BlockInfo alignment This fixes the following two lint warnings FileInfo: struct of size 160 bytes could be of size 136 bytes BlockInfo: struct of size 48 bytes could be of size 40 bytes by reordering fields in alignment order (64 bit fields, then 32 bit fields, then 16 bit fields (if any), then small ones). The end result is a slightly less aesthetically pleasing struct field order, but since these are the objects we often juggle in bulk and keep large queues of I think it's worth it. It's a micro optimization, but a cheap one.
67 lines
2.4 KiB
Protocol Buffer
67 lines
2.4 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package db;
|
|
|
|
import "repos/protobuf/gogoproto/gogo.proto";
|
|
import "lib/protocol/bep.proto";
|
|
|
|
option (gogoproto.goproto_getters_all) = false;
|
|
option (gogoproto.sizer_all) = false;
|
|
option (gogoproto.protosizer_all) = true;
|
|
option (gogoproto.goproto_unkeyed_all) = false;
|
|
option (gogoproto.goproto_unrecognized_all) = false;
|
|
option (gogoproto.goproto_sizecache_all) = false;
|
|
|
|
message FileVersion {
|
|
protocol.Vector version = 1 [(gogoproto.nullable) = false];
|
|
bytes device = 2;
|
|
bool invalid = 3;
|
|
}
|
|
|
|
message VersionList {
|
|
option (gogoproto.goproto_stringer) = false;
|
|
repeated FileVersion versions = 1 [(gogoproto.nullable) = false];
|
|
}
|
|
|
|
// Must be the same as FileInfo but without the blocks field
|
|
message FileInfoTruncated {
|
|
option (gogoproto.goproto_stringer) = false;
|
|
string name = 1;
|
|
int64 size = 3;
|
|
int64 modified_s = 5;
|
|
uint64 modified_by = 12 [(gogoproto.customtype) = "github.com/syncthing/syncthing/lib/protocol.ShortID", (gogoproto.nullable) = false];
|
|
protocol.Vector version = 9 [(gogoproto.nullable) = false];
|
|
int64 sequence = 10;
|
|
// repeated BlockInfo Blocks = 16
|
|
string symlink_target = 17;
|
|
protocol.FileInfoType type = 2;
|
|
uint32 permissions = 4;
|
|
int32 modified_ns = 11;
|
|
int32 block_size = 13 [(gogoproto.customname) = "RawBlockSize"];
|
|
|
|
// see bep.proto
|
|
uint32 local_flags = 1000;
|
|
|
|
bool deleted = 6;
|
|
bool invalid = 7 [(gogoproto.customname) = "RawInvalid"];
|
|
bool no_permissions = 8;
|
|
}
|
|
|
|
// 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 deviceID = 17; // device ID for remote devices, or special values for local/global
|
|
uint32 localFlags = 18; // the local flag for this count bucket
|
|
}
|
|
|
|
message CountsSet {
|
|
repeated Counts counts = 1 [(gogoproto.nullable) = false];
|
|
int64 created = 2; // unix nanos
|
|
}
|