Signal-iOS/SignalServiceKit/protobuf
Jordan Rose 58a688ad61 Lazily deserialize individual group changes
If there are several group changes being returned at once,
deserializing all of them up front can lead to excessive memory use,
especially for very large groups. This commit switches to
deserializing each change as it is used, which doubles the amount of
CPU work (because we loop through the changes twice) in exchange for
only ever having one Change object graph in memory at a time. It does
also mean we can get a protobuf deserialization error a bit later in
the process if the data is ever corrupted, but that shouldn't cause
additional issues at these particular call sites.
2022-01-20 12:00:50 -08:00
..
DeviceTransfer.proto Device Transfer Service 2020-05-18 20:48:08 -07:00
Fingerprint.proto Respond to CR. 2018-08-03 14:03:02 -04:00
Groups.proto Lazily deserialize individual group changes 2022-01-20 12:00:50 -08:00
KeyBackup.proto Proto changes 2019-10-14 14:51:04 -07:00
Makefile Implement AxolotlKit<->SignalClient SessionRecord migration 2021-01-28 12:03:50 -08:00
Provisioning.proto Android also doesn't require readReceipts 2019-11-08 12:35:16 -08:00
README.md Swift protos for Envelope 2018-07-25 13:04:26 -06:00
SessionRecord.proto SSK: Fix session migration for absent pre-key IDs 2021-01-28 12:03:50 -08:00
SignalIOS.proto Remove @required from proto enums. 2019-05-29 11:05:01 -04:00
SignalService.proto [Badging] Signal devices when subscription status changes 2021-12-02 21:04:47 -10:00
StorageService.proto Sync preferred reactions through storage service 2022-01-03 15:35:37 -08:00
WebSocketResources.proto Remove @required from proto enums. 2019-05-29 11:05:01 -04:00

SignalServiceKit Protobufs

These protobuf definitions are copied from Signal-Android, but modified to match some iOS conventions.

Prequisites

Install Apple's swift-protobuf (not the similarly named protobuf-swift)

brew install swift-protobuf

This should install an up to date protobuf package as a dependency. Note that since we use the legacy proto2 format, we need to specify this in our .proto files.

syntax = "proto2";

Building Protobuf

cd ~/src/WhisperSystems/SignalServiceKit/protobuf
make