Code generate Swift wrappers for protocol buffers.

This commit is contained in:
Matthew Chen 2018-08-01 11:20:42 -04:00
parent 937ae24556
commit 2b05bbc0aa
4 changed files with 489 additions and 472 deletions

View File

@ -293,12 +293,13 @@ public enum %s: Error {
class MessageField:
def __init__(self, name, index, rules, proto_type, default_value):
def __init__(self, name, index, rules, proto_type, default_value, sort_index):
self.name = name
self.index = index
self.rules = rules
self.proto_type = proto_type
self.default_value = default_value
self.sort_index = sort_index
class MessageContext(BaseContext):
@ -315,8 +316,10 @@ class MessageContext(BaseContext):
self.field_map = {}
def fields(self):
return self.field_map.values()
def fields(self):
fields = self.field_map.values()
fields = sorted(fields, key=lambda f: f.sort_index)
return fields
def field_indices(self):
return [field.index for field in self.fields()]
@ -685,7 +688,8 @@ def parse_message(args, proto_file_path, parser, parent_context, message_name):
# print '# message:', message_name
context = MessageContext(args, parent_context, message_name)
sort_index = 0
while True:
try:
line = parser.next()
@ -753,8 +757,10 @@ def parse_message(args, proto_file_path, parser, parent_context, message_name):
raise Exception('Duplicate message field index[%s]: %s' % (proto_file_path, item_name))
# context.field_indices.add(item_index)
context.field_map[item_index] = MessageField(item_name, item_index, item_rules, item_type, item_default)
context.field_map[item_index] = MessageField(item_name, item_index, item_rules, item_type, item_default, sort_index)
sort_index = sort_index + 1
continue
raise Exception('Invalid message syntax[%s]: %s' % (proto_file_path, line))

View File

@ -134,7 +134,7 @@ public class MessageFetcherJob: NSObject {
let legacyMessage: Data? = try params.optionalBase64EncodedData(key: "message")
let content: Data? = try params.optionalBase64EncodedData(key: "content")
return SSKProtoEnvelope(type: type, relay: nil, source: source, timestamp: UInt64(timestamp), sourceDevice: sourceDevice, legacyMessage: legacyMessage, content: content)
return SSKProtoEnvelope(type: type, source: source, sourceDevice: sourceDevice, relay: nil, timestamp: UInt64(timestamp), legacyMessage: legacyMessage, content: content)
} catch {
owsFail("\(self.logTag) in \(#function) error building envelope: \(error)")
return nil

View File

@ -3392,10 +3392,10 @@ typedef OWSContact * (^OWSContactBlock)(YapDatabaseReadWriteTransaction *transac
SSKProtoEnvelope *envelope = [[SSKProtoEnvelope alloc] initWithType:SSKProtoEnvelopeTypeCiphertext
relay:nil
source:source
timestamp:timestamp
sourceDevice:1
relay:nil
timestamp:timestamp
legacyMessage:nil
content:nil];
return envelope;
@ -3891,10 +3891,10 @@ typedef OWSContact * (^OWSContactBlock)(YapDatabaseReadWriteTransaction *transac
NSData *content = plaintextData;
SSKProtoEnvelope *envelope = [[SSKProtoEnvelope alloc] initWithType:envelopeType
relay:nil
source:source
timestamp:timestamp
sourceDevice:sourceDevice
relay:nil
timestamp:timestamp
legacyMessage:nil
content:content];

File diff suppressed because it is too large Load Diff