syntax = "proto3"; package internal; message DB { string TimeQuantum = 1; } message Frame { string TimeQuantum = 1; } message Bitmap { repeated uint64 Bits = 1; repeated Attr Attrs = 2; } message Pair { uint64 Key = 1; uint64 Count = 2; } message Bit { uint64 BitmapID = 1; uint64 ProfileID = 2; int64 Timestamp = 3; } message Profile { uint64 ID = 1; repeated Attr Attrs = 2; } message Attr { string Key = 1; uint64 Type = 2; string StringValue = 3; uint64 UintValue = 4; bool BoolValue = 5; } message AttrMap { repeated Attr Attrs = 1; } message QueryRequest { string DB = 1; string Query = 2; repeated uint64 Slices = 3; bool Profiles = 4; int64 Timestamp = 5; string Quantum = 6; bool Remote = 7; } message QueryResponse { string Err = 1; repeated QueryResult Results = 2; repeated Profile Profiles = 3; } message QueryResult { Bitmap Bitmap = 1; uint64 N = 2; repeated Pair Pairs = 3; bool Changed = 4; } message ImportRequest { string DB = 1; string Frame = 2; uint64 Slice = 3; repeated uint64 BitmapIDs = 4; repeated uint64 ProfileIDs = 5; repeated int64 Timestamps = 6; } message ImportResponse { string Err = 1; } message BlockDataRequest { string DB = 1; string Frame = 2; uint64 Slice = 3; uint64 Block = 4; } message BlockDataResponse { repeated uint64 BitmapIDs = 1; repeated uint64 ProfileIDs = 2; } message Cache { repeated uint64 BitmapIDs = 1; } message MaxSlicesResponse { map MaxSlices = 1; }