From 1d0b645fc98545ba09d2828c1908689d3052ca4c Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Mon, 22 Aug 2016 16:09:58 -0400 Subject: [PATCH] Update to new protocol (#23) * new protobufs from libsignal-service-java@a1c93edc40e3ce201fa4e70339a3e6f4e197e319 * Makefile to build ObjC classes from *.proto * refactored some touched code to minimize duplication * removed unused protos * deleted some dead code * renamed method for clarity // FREEBIE --- Example/TSKitiOSTestApp/Podfile.lock | 4 +- SignalServiceKit.podspec | 5 +- protobuf/Makefile | 9 + ...ure.proto => OWSSignalServiceProtos.proto} | 24 +- protobuf/Provisioning.pb.h | 165 - protobuf/Provisioning.pb.m | 608 -- protobuf/Provisioning.proto | 16 - protobuf/TextSecure.pb.h | 1070 ---- protobuf/TextSecure.pb.m | 4587 --------------- protobuf/WebSocketResources.pb.h | 264 - protobuf/WebSocketResources.pb.m | 1051 ---- protobuf/WebSocketResources.proto | 46 - src/Contacts/TSThread.h | 6 + src/Contacts/TSThread.m | 32 + src/Contacts/Threads/TSContactThread.h | 5 +- src/Contacts/Threads/TSContactThread.m | 7 +- src/Messages/IncomingPushMessageSignal.pb.h | 402 -- src/Messages/IncomingPushMessageSignal.pb.m | 1616 ----- src/Messages/Interactions/TSErrorMessage.h | 28 +- src/Messages/Interactions/TSErrorMessage.m | 55 +- .../TSErrorMessage_privateConstructor.h | 2 +- src/Messages/Interactions/TSInteraction.h | 1 + src/Messages/Interactions/TSInteraction.m | 42 +- .../TSInvalidIdentityKeyErrorMessage.h | 2 +- .../TSInvalidIdentityKeyErrorMessage.m | 3 +- ...SInvalidIdentityKeyReceivingErrorMessage.h | 5 +- ...SInvalidIdentityKeyReceivingErrorMessage.m | 137 +- .../TSInvalidIdentityKeySendingErrorMessage.m | 3 +- src/Messages/OWSSignalServiceProtos.pb.h | 1234 ++++ src/Messages/OWSSignalServiceProtos.pb.m | 5213 +++++++++++++++++ src/Messages/TSMessagesManager+attachments.h | 3 +- src/Messages/TSMessagesManager+attachments.m | 98 +- src/Messages/TSMessagesManager+sendMessages.m | 18 +- src/Messages/TSMessagesManager.h | 17 +- src/Messages/TSMessagesManager.m | 247 +- src/Network/WebSockets/TSSocketManager.m | 4 +- 36 files changed, 6883 insertions(+), 10146 deletions(-) create mode 100644 protobuf/Makefile rename protobuf/{TextSecure.proto => OWSSignalServiceProtos.proto} (79%) delete mode 100644 protobuf/Provisioning.pb.h delete mode 100644 protobuf/Provisioning.pb.m delete mode 100644 protobuf/Provisioning.proto delete mode 100644 protobuf/TextSecure.pb.h delete mode 100644 protobuf/TextSecure.pb.m delete mode 100644 protobuf/WebSocketResources.pb.h delete mode 100644 protobuf/WebSocketResources.pb.m delete mode 100644 protobuf/WebSocketResources.proto delete mode 100644 src/Messages/IncomingPushMessageSignal.pb.h delete mode 100644 src/Messages/IncomingPushMessageSignal.pb.m create mode 100644 src/Messages/OWSSignalServiceProtos.pb.h create mode 100644 src/Messages/OWSSignalServiceProtos.pb.m diff --git a/Example/TSKitiOSTestApp/Podfile.lock b/Example/TSKitiOSTestApp/Podfile.lock index cd030d1..8830776 100644 --- a/Example/TSKitiOSTestApp/Podfile.lock +++ b/Example/TSKitiOSTestApp/Podfile.lock @@ -35,7 +35,7 @@ PODS: - ProtocolBuffers (1.9.10) - Reachability (3.2) - SAMKeychain (1.5.0) - - SignalServiceKit (0.0.8): + - SignalServiceKit (0.1.0): - '25519' - AFNetworking - AxolotlKit @@ -130,7 +130,7 @@ SPEC CHECKSUMS: ProtocolBuffers: d088180c10072b3d24a9939a6314b7b9bcc2340b Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96 SAMKeychain: 1fc9ae02f576365395758b12888c84704eebc423 - SignalServiceKit: 9bdacbb1cb046836e9d601273fa4fad934ad3ecb + SignalServiceKit: 84781a0e45a7eead501a3e35065a1b32dcbbe0ac SocketRocket: 3f77ec2104cc113add553f817ad90a77114f5d43 SQLCipher: 4c768761421736a247ed6cf412d9045615d53dff TwistedOakCollapsingFutures: f359b90f203e9ab13dfb92c9ff41842a7fe1cd0c diff --git a/SignalServiceKit.podspec b/SignalServiceKit.podspec index 5f3c7ec..29602d1 100644 --- a/SignalServiceKit.podspec +++ b/SignalServiceKit.podspec @@ -8,7 +8,7 @@ Pod::Spec.new do |s| s.name = "SignalServiceKit" - s.version = "0.0.8" + s.version = "0.1.0" s.summary = "An Objective-C library for communicating with the Signal messaging service." s.description = <<-DESC @@ -37,9 +37,6 @@ An Objective-C library for communicating with the Signal messaging service. s.dependency 'AxolotlKit' s.dependency 'Mantle' s.dependency 'YapDatabase/SQLCipher' - # NOTE: we're using a custom fork of SocketRocket to support our certificate - # pinning policy. - # see Example/TSKitiOSTestApp/Podfile for details s.dependency 'SocketRocket' s.dependency 'libPhoneNumber-iOS' s.dependency 'SAMKeychain' diff --git a/protobuf/Makefile b/protobuf/Makefile new file mode 100644 index 0000000..2879531 --- /dev/null +++ b/protobuf/Makefile @@ -0,0 +1,9 @@ +# Assumes you've installed protobug-objc +# see: https://github.com/alexeyxo/protobuf-objc +signal_service_proto: + protoc --objc_out=../src/Messages/ \ + --plugin=/usr/local/bin/proto-gen-objc \ + --proto_path="${HOME}/src/WhisperSystems/protobuf-objc/src/compiler/" \ + --proto_path="${HOME}/src/WhisperSystems/protobuf-objc/src/compiler/google/protobuf/" \ + --proto_path='./' \ + OWSSignalServiceProtos.proto diff --git a/protobuf/TextSecure.proto b/protobuf/OWSSignalServiceProtos.proto similarity index 79% rename from protobuf/TextSecure.proto rename to protobuf/OWSSignalServiceProtos.proto index 91514c4..8138837 100644 --- a/protobuf/TextSecure.proto +++ b/protobuf/OWSSignalServiceProtos.proto @@ -1,7 +1,10 @@ -package textsecure; +package signalservice; -option java_package = "org.whispersystems.textsecure.internal.push"; -option java_outer_classname = "TextSecureProtos"; +option java_package = "org.whispersystems.signalservice.internal.push"; +option java_outer_classname = "SignalServiceProtos"; + +import "objectivec-descriptor.proto"; +option (google.protobuf.objectivec_file_options).class_prefix = "OWSSignalServiceProtos"; message Envelope { enum Type { @@ -62,10 +65,16 @@ message SyncMessage { optional Type type = 1; } + message Read { + optional string sender = 1; + optional uint64 timestamp = 2; + } + optional Sent sent = 1; optional Contacts contacts = 2; optional Groups groups = 3; optional Request request = 4; + repeated Read read = 5; } message AttachmentPointer { @@ -107,8 +116,9 @@ message GroupDetails { optional uint32 length = 2; } - optional bytes id = 1; - optional string name = 2; - repeated string members = 3; - optional Avatar avatar = 4; + optional bytes id = 1; + optional string name = 2; + repeated string members = 3; + optional Avatar avatar = 4; + optional bool active = 5 [default = true]; } diff --git a/protobuf/Provisioning.pb.h b/protobuf/Provisioning.pb.h deleted file mode 100644 index 3528c36..0000000 --- a/protobuf/Provisioning.pb.h +++ /dev/null @@ -1,165 +0,0 @@ -// Generated by the protocol buffer compiler. DO NOT EDIT! - -#import "ProtocolBuffers.h" - -// @@protoc_insertion_point(imports) - -@class ProvisionEnvelope; -@class ProvisionEnvelopeBuilder; -@class ProvisionMessage; -@class ProvisionMessageBuilder; -#ifndef __has_feature - #define __has_feature(x) 0 // Compatibility with non-clang compilers. -#endif // __has_feature - -#ifndef NS_RETURNS_NOT_RETAINED - #if __has_feature(attribute_ns_returns_not_retained) - #define NS_RETURNS_NOT_RETAINED __attribute__((ns_returns_not_retained)) - #else - #define NS_RETURNS_NOT_RETAINED - #endif -#endif - - -@interface ProvisioningRoot : NSObject { -} -+ (PBExtensionRegistry*) extensionRegistry; -+ (void) registerAllExtensions:(PBMutableExtensionRegistry*) registry; -@end - -@interface ProvisionEnvelope : PBGeneratedMessage { -@private - BOOL hasPublicKey_:1; - BOOL hasBody_:1; - NSData* publicKey; - NSData* body; -} -- (BOOL) hasPublicKey; -- (BOOL) hasBody; -@property (readonly, strong) NSData* publicKey; -@property (readonly, strong) NSData* body; - -+ (ProvisionEnvelope*) defaultInstance; -- (ProvisionEnvelope*) defaultInstance; - -- (BOOL) isInitialized; -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output; -- (ProvisionEnvelopeBuilder*) builder; -+ (ProvisionEnvelopeBuilder*) builder; -+ (ProvisionEnvelopeBuilder*) builderWithPrototype:(ProvisionEnvelope*) prototype; -- (ProvisionEnvelopeBuilder*) toBuilder; - -+ (ProvisionEnvelope*) parseFromData:(NSData*) data; -+ (ProvisionEnvelope*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (ProvisionEnvelope*) parseFromInputStream:(NSInputStream*) input; -+ (ProvisionEnvelope*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (ProvisionEnvelope*) parseFromCodedInputStream:(PBCodedInputStream*) input; -+ (ProvisionEnvelope*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -@end - -@interface ProvisionEnvelopeBuilder : PBGeneratedMessageBuilder { -@private - ProvisionEnvelope* result; -} - -- (ProvisionEnvelope*) defaultInstance; - -- (ProvisionEnvelopeBuilder*) clear; -- (ProvisionEnvelopeBuilder*) clone; - -- (ProvisionEnvelope*) build; -- (ProvisionEnvelope*) buildPartial; - -- (ProvisionEnvelopeBuilder*) mergeFrom:(ProvisionEnvelope*) other; -- (ProvisionEnvelopeBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input; -- (ProvisionEnvelopeBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; - -- (BOOL) hasPublicKey; -- (NSData*) publicKey; -- (ProvisionEnvelopeBuilder*) setPublicKey:(NSData*) value; -- (ProvisionEnvelopeBuilder*) clearPublicKey; - -- (BOOL) hasBody; -- (NSData*) body; -- (ProvisionEnvelopeBuilder*) setBody:(NSData*) value; -- (ProvisionEnvelopeBuilder*) clearBody; -@end - -@interface ProvisionMessage : PBGeneratedMessage { -@private - BOOL hasNumber_:1; - BOOL hasProvisioningCode_:1; - BOOL hasIdentityKeyPublic_:1; - BOOL hasIdentityKeyPrivate_:1; - NSString* number; - NSString* provisioningCode; - NSData* identityKeyPublic; - NSData* identityKeyPrivate; -} -- (BOOL) hasIdentityKeyPublic; -- (BOOL) hasIdentityKeyPrivate; -- (BOOL) hasNumber; -- (BOOL) hasProvisioningCode; -@property (readonly, strong) NSData* identityKeyPublic; -@property (readonly, strong) NSData* identityKeyPrivate; -@property (readonly, strong) NSString* number; -@property (readonly, strong) NSString* provisioningCode; - -+ (ProvisionMessage*) defaultInstance; -- (ProvisionMessage*) defaultInstance; - -- (BOOL) isInitialized; -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output; -- (ProvisionMessageBuilder*) builder; -+ (ProvisionMessageBuilder*) builder; -+ (ProvisionMessageBuilder*) builderWithPrototype:(ProvisionMessage*) prototype; -- (ProvisionMessageBuilder*) toBuilder; - -+ (ProvisionMessage*) parseFromData:(NSData*) data; -+ (ProvisionMessage*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (ProvisionMessage*) parseFromInputStream:(NSInputStream*) input; -+ (ProvisionMessage*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (ProvisionMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input; -+ (ProvisionMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -@end - -@interface ProvisionMessageBuilder : PBGeneratedMessageBuilder { -@private - ProvisionMessage* result; -} - -- (ProvisionMessage*) defaultInstance; - -- (ProvisionMessageBuilder*) clear; -- (ProvisionMessageBuilder*) clone; - -- (ProvisionMessage*) build; -- (ProvisionMessage*) buildPartial; - -- (ProvisionMessageBuilder*) mergeFrom:(ProvisionMessage*) other; -- (ProvisionMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input; -- (ProvisionMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; - -- (BOOL) hasIdentityKeyPublic; -- (NSData*) identityKeyPublic; -- (ProvisionMessageBuilder*) setIdentityKeyPublic:(NSData*) value; -- (ProvisionMessageBuilder*) clearIdentityKeyPublic; - -- (BOOL) hasIdentityKeyPrivate; -- (NSData*) identityKeyPrivate; -- (ProvisionMessageBuilder*) setIdentityKeyPrivate:(NSData*) value; -- (ProvisionMessageBuilder*) clearIdentityKeyPrivate; - -- (BOOL) hasNumber; -- (NSString*) number; -- (ProvisionMessageBuilder*) setNumber:(NSString*) value; -- (ProvisionMessageBuilder*) clearNumber; - -- (BOOL) hasProvisioningCode; -- (NSString*) provisioningCode; -- (ProvisionMessageBuilder*) setProvisioningCode:(NSString*) value; -- (ProvisionMessageBuilder*) clearProvisioningCode; -@end - - -// @@protoc_insertion_point(global_scope) diff --git a/protobuf/Provisioning.pb.m b/protobuf/Provisioning.pb.m deleted file mode 100644 index ee4b939..0000000 --- a/protobuf/Provisioning.pb.m +++ /dev/null @@ -1,608 +0,0 @@ -// Generated by the protocol buffer compiler. DO NOT EDIT! - -#import "Provisioning.pb.h" -// @@protoc_insertion_point(imports) - -@implementation ProvisioningRoot -static PBExtensionRegistry* extensionRegistry = nil; -+ (PBExtensionRegistry*) extensionRegistry { - return extensionRegistry; -} - -+ (void) initialize { - if (self == [ProvisioningRoot class]) { - PBMutableExtensionRegistry* registry = [PBMutableExtensionRegistry registry]; - [self registerAllExtensions:registry]; - extensionRegistry = registry; - } -} -+ (void) registerAllExtensions:(PBMutableExtensionRegistry*) registry { -} -@end - -@interface ProvisionEnvelope () -@property (strong) NSData* publicKey; -@property (strong) NSData* body; -@end - -@implementation ProvisionEnvelope - -- (BOOL) hasPublicKey { - return !!hasPublicKey_; -} -- (void) setHasPublicKey:(BOOL) value_ { - hasPublicKey_ = !!value_; -} -@synthesize publicKey; -- (BOOL) hasBody { - return !!hasBody_; -} -- (void) setHasBody:(BOOL) value_ { - hasBody_ = !!value_; -} -@synthesize body; -- (id) init { - if ((self = [super init])) { - self.publicKey = [NSData data]; - self.body = [NSData data]; - } - return self; -} -static ProvisionEnvelope* defaultProvisionEnvelopeInstance = nil; -+ (void) initialize { - if (self == [ProvisionEnvelope class]) { - defaultProvisionEnvelopeInstance = [[ProvisionEnvelope alloc] init]; - } -} -+ (ProvisionEnvelope*) defaultInstance { - return defaultProvisionEnvelopeInstance; -} -- (ProvisionEnvelope*) defaultInstance { - return defaultProvisionEnvelopeInstance; -} -- (BOOL) isInitialized { - return YES; -} -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { - if (self.hasPublicKey) { - [output writeData:1 value:self.publicKey]; - } - if (self.hasBody) { - [output writeData:2 value:self.body]; - } - [self.unknownFields writeToCodedOutputStream:output]; -} -- (SInt32) serializedSize { - __block SInt32 size_ = memoizedSerializedSize; - if (size_ != -1) { - return size_; - } - - size_ = 0; - if (self.hasPublicKey) { - size_ += computeDataSize(1, self.publicKey); - } - if (self.hasBody) { - size_ += computeDataSize(2, self.body); - } - size_ += self.unknownFields.serializedSize; - memoizedSerializedSize = size_; - return size_; -} -+ (ProvisionEnvelope*) parseFromData:(NSData*) data { - return (ProvisionEnvelope*)[[[ProvisionEnvelope builder] mergeFromData:data] build]; -} -+ (ProvisionEnvelope*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (ProvisionEnvelope*)[[[ProvisionEnvelope builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; -} -+ (ProvisionEnvelope*) parseFromInputStream:(NSInputStream*) input { - return (ProvisionEnvelope*)[[[ProvisionEnvelope builder] mergeFromInputStream:input] build]; -} -+ (ProvisionEnvelope*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (ProvisionEnvelope*)[[[ProvisionEnvelope builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (ProvisionEnvelope*) parseFromCodedInputStream:(PBCodedInputStream*) input { - return (ProvisionEnvelope*)[[[ProvisionEnvelope builder] mergeFromCodedInputStream:input] build]; -} -+ (ProvisionEnvelope*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (ProvisionEnvelope*)[[[ProvisionEnvelope builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (ProvisionEnvelopeBuilder*) builder { - return [[ProvisionEnvelopeBuilder alloc] init]; -} -+ (ProvisionEnvelopeBuilder*) builderWithPrototype:(ProvisionEnvelope*) prototype { - return [[ProvisionEnvelope builder] mergeFrom:prototype]; -} -- (ProvisionEnvelopeBuilder*) builder { - return [ProvisionEnvelope builder]; -} -- (ProvisionEnvelopeBuilder*) toBuilder { - return [ProvisionEnvelope builderWithPrototype:self]; -} -- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { - if (self.hasPublicKey) { - [output appendFormat:@"%@%@: %@\n", indent, @"publicKey", self.publicKey]; - } - if (self.hasBody) { - [output appendFormat:@"%@%@: %@\n", indent, @"body", self.body]; - } - [self.unknownFields writeDescriptionTo:output withIndent:indent]; -} -- (BOOL) isEqual:(id)other { - if (other == self) { - return YES; - } - if (![other isKindOfClass:[ProvisionEnvelope class]]) { - return NO; - } - ProvisionEnvelope *otherMessage = other; - return - self.hasPublicKey == otherMessage.hasPublicKey && - (!self.hasPublicKey || [self.publicKey isEqual:otherMessage.publicKey]) && - self.hasBody == otherMessage.hasBody && - (!self.hasBody || [self.body isEqual:otherMessage.body]) && - (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); -} -- (NSUInteger) hash { - __block NSUInteger hashCode = 7; - if (self.hasPublicKey) { - hashCode = hashCode * 31 + [self.publicKey hash]; - } - if (self.hasBody) { - hashCode = hashCode * 31 + [self.body hash]; - } - hashCode = hashCode * 31 + [self.unknownFields hash]; - return hashCode; -} -@end - -@interface ProvisionEnvelopeBuilder() -@property (strong) ProvisionEnvelope* result; -@end - -@implementation ProvisionEnvelopeBuilder -@synthesize result; -- (id) init { - if ((self = [super init])) { - self.result = [[ProvisionEnvelope alloc] init]; - } - return self; -} -- (PBGeneratedMessage*) internalGetResult { - return result; -} -- (ProvisionEnvelopeBuilder*) clear { - self.result = [[ProvisionEnvelope alloc] init]; - return self; -} -- (ProvisionEnvelopeBuilder*) clone { - return [ProvisionEnvelope builderWithPrototype:result]; -} -- (ProvisionEnvelope*) defaultInstance { - return [ProvisionEnvelope defaultInstance]; -} -- (ProvisionEnvelope*) build { - [self checkInitialized]; - return [self buildPartial]; -} -- (ProvisionEnvelope*) buildPartial { - ProvisionEnvelope* returnMe = result; - self.result = nil; - return returnMe; -} -- (ProvisionEnvelopeBuilder*) mergeFrom:(ProvisionEnvelope*) other { - if (other == [ProvisionEnvelope defaultInstance]) { - return self; - } - if (other.hasPublicKey) { - [self setPublicKey:other.publicKey]; - } - if (other.hasBody) { - [self setBody:other.body]; - } - [self mergeUnknownFields:other.unknownFields]; - return self; -} -- (ProvisionEnvelopeBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { - return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; -} -- (ProvisionEnvelopeBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; - while (YES) { - SInt32 tag = [input readTag]; - switch (tag) { - case 0: - [self setUnknownFields:[unknownFields build]]; - return self; - default: { - if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) { - [self setUnknownFields:[unknownFields build]]; - return self; - } - break; - } - case 10: { - [self setPublicKey:[input readData]]; - break; - } - case 18: { - [self setBody:[input readData]]; - break; - } - } - } -} -- (BOOL) hasPublicKey { - return result.hasPublicKey; -} -- (NSData*) publicKey { - return result.publicKey; -} -- (ProvisionEnvelopeBuilder*) setPublicKey:(NSData*) value { - result.hasPublicKey = YES; - result.publicKey = value; - return self; -} -- (ProvisionEnvelopeBuilder*) clearPublicKey { - result.hasPublicKey = NO; - result.publicKey = [NSData data]; - return self; -} -- (BOOL) hasBody { - return result.hasBody; -} -- (NSData*) body { - return result.body; -} -- (ProvisionEnvelopeBuilder*) setBody:(NSData*) value { - result.hasBody = YES; - result.body = value; - return self; -} -- (ProvisionEnvelopeBuilder*) clearBody { - result.hasBody = NO; - result.body = [NSData data]; - return self; -} -@end - -@interface ProvisionMessage () -@property (strong) NSData* identityKeyPublic; -@property (strong) NSData* identityKeyPrivate; -@property (strong) NSString* number; -@property (strong) NSString* provisioningCode; -@end - -@implementation ProvisionMessage - -- (BOOL) hasIdentityKeyPublic { - return !!hasIdentityKeyPublic_; -} -- (void) setHasIdentityKeyPublic:(BOOL) value_ { - hasIdentityKeyPublic_ = !!value_; -} -@synthesize identityKeyPublic; -- (BOOL) hasIdentityKeyPrivate { - return !!hasIdentityKeyPrivate_; -} -- (void) setHasIdentityKeyPrivate:(BOOL) value_ { - hasIdentityKeyPrivate_ = !!value_; -} -@synthesize identityKeyPrivate; -- (BOOL) hasNumber { - return !!hasNumber_; -} -- (void) setHasNumber:(BOOL) value_ { - hasNumber_ = !!value_; -} -@synthesize number; -- (BOOL) hasProvisioningCode { - return !!hasProvisioningCode_; -} -- (void) setHasProvisioningCode:(BOOL) value_ { - hasProvisioningCode_ = !!value_; -} -@synthesize provisioningCode; -- (id) init { - if ((self = [super init])) { - self.identityKeyPublic = [NSData data]; - self.identityKeyPrivate = [NSData data]; - self.number = @""; - self.provisioningCode = @""; - } - return self; -} -static ProvisionMessage* defaultProvisionMessageInstance = nil; -+ (void) initialize { - if (self == [ProvisionMessage class]) { - defaultProvisionMessageInstance = [[ProvisionMessage alloc] init]; - } -} -+ (ProvisionMessage*) defaultInstance { - return defaultProvisionMessageInstance; -} -- (ProvisionMessage*) defaultInstance { - return defaultProvisionMessageInstance; -} -- (BOOL) isInitialized { - return YES; -} -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { - if (self.hasIdentityKeyPublic) { - [output writeData:1 value:self.identityKeyPublic]; - } - if (self.hasIdentityKeyPrivate) { - [output writeData:2 value:self.identityKeyPrivate]; - } - if (self.hasNumber) { - [output writeString:3 value:self.number]; - } - if (self.hasProvisioningCode) { - [output writeString:4 value:self.provisioningCode]; - } - [self.unknownFields writeToCodedOutputStream:output]; -} -- (SInt32) serializedSize { - __block SInt32 size_ = memoizedSerializedSize; - if (size_ != -1) { - return size_; - } - - size_ = 0; - if (self.hasIdentityKeyPublic) { - size_ += computeDataSize(1, self.identityKeyPublic); - } - if (self.hasIdentityKeyPrivate) { - size_ += computeDataSize(2, self.identityKeyPrivate); - } - if (self.hasNumber) { - size_ += computeStringSize(3, self.number); - } - if (self.hasProvisioningCode) { - size_ += computeStringSize(4, self.provisioningCode); - } - size_ += self.unknownFields.serializedSize; - memoizedSerializedSize = size_; - return size_; -} -+ (ProvisionMessage*) parseFromData:(NSData*) data { - return (ProvisionMessage*)[[[ProvisionMessage builder] mergeFromData:data] build]; -} -+ (ProvisionMessage*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (ProvisionMessage*)[[[ProvisionMessage builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; -} -+ (ProvisionMessage*) parseFromInputStream:(NSInputStream*) input { - return (ProvisionMessage*)[[[ProvisionMessage builder] mergeFromInputStream:input] build]; -} -+ (ProvisionMessage*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (ProvisionMessage*)[[[ProvisionMessage builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (ProvisionMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input { - return (ProvisionMessage*)[[[ProvisionMessage builder] mergeFromCodedInputStream:input] build]; -} -+ (ProvisionMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (ProvisionMessage*)[[[ProvisionMessage builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (ProvisionMessageBuilder*) builder { - return [[ProvisionMessageBuilder alloc] init]; -} -+ (ProvisionMessageBuilder*) builderWithPrototype:(ProvisionMessage*) prototype { - return [[ProvisionMessage builder] mergeFrom:prototype]; -} -- (ProvisionMessageBuilder*) builder { - return [ProvisionMessage builder]; -} -- (ProvisionMessageBuilder*) toBuilder { - return [ProvisionMessage builderWithPrototype:self]; -} -- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { - if (self.hasIdentityKeyPublic) { - [output appendFormat:@"%@%@: %@\n", indent, @"identityKeyPublic", self.identityKeyPublic]; - } - if (self.hasIdentityKeyPrivate) { - [output appendFormat:@"%@%@: %@\n", indent, @"identityKeyPrivate", self.identityKeyPrivate]; - } - if (self.hasNumber) { - [output appendFormat:@"%@%@: %@\n", indent, @"number", self.number]; - } - if (self.hasProvisioningCode) { - [output appendFormat:@"%@%@: %@\n", indent, @"provisioningCode", self.provisioningCode]; - } - [self.unknownFields writeDescriptionTo:output withIndent:indent]; -} -- (BOOL) isEqual:(id)other { - if (other == self) { - return YES; - } - if (![other isKindOfClass:[ProvisionMessage class]]) { - return NO; - } - ProvisionMessage *otherMessage = other; - return - self.hasIdentityKeyPublic == otherMessage.hasIdentityKeyPublic && - (!self.hasIdentityKeyPublic || [self.identityKeyPublic isEqual:otherMessage.identityKeyPublic]) && - self.hasIdentityKeyPrivate == otherMessage.hasIdentityKeyPrivate && - (!self.hasIdentityKeyPrivate || [self.identityKeyPrivate isEqual:otherMessage.identityKeyPrivate]) && - self.hasNumber == otherMessage.hasNumber && - (!self.hasNumber || [self.number isEqual:otherMessage.number]) && - self.hasProvisioningCode == otherMessage.hasProvisioningCode && - (!self.hasProvisioningCode || [self.provisioningCode isEqual:otherMessage.provisioningCode]) && - (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); -} -- (NSUInteger) hash { - __block NSUInteger hashCode = 7; - if (self.hasIdentityKeyPublic) { - hashCode = hashCode * 31 + [self.identityKeyPublic hash]; - } - if (self.hasIdentityKeyPrivate) { - hashCode = hashCode * 31 + [self.identityKeyPrivate hash]; - } - if (self.hasNumber) { - hashCode = hashCode * 31 + [self.number hash]; - } - if (self.hasProvisioningCode) { - hashCode = hashCode * 31 + [self.provisioningCode hash]; - } - hashCode = hashCode * 31 + [self.unknownFields hash]; - return hashCode; -} -@end - -@interface ProvisionMessageBuilder() -@property (strong) ProvisionMessage* result; -@end - -@implementation ProvisionMessageBuilder -@synthesize result; -- (id) init { - if ((self = [super init])) { - self.result = [[ProvisionMessage alloc] init]; - } - return self; -} -- (PBGeneratedMessage*) internalGetResult { - return result; -} -- (ProvisionMessageBuilder*) clear { - self.result = [[ProvisionMessage alloc] init]; - return self; -} -- (ProvisionMessageBuilder*) clone { - return [ProvisionMessage builderWithPrototype:result]; -} -- (ProvisionMessage*) defaultInstance { - return [ProvisionMessage defaultInstance]; -} -- (ProvisionMessage*) build { - [self checkInitialized]; - return [self buildPartial]; -} -- (ProvisionMessage*) buildPartial { - ProvisionMessage* returnMe = result; - self.result = nil; - return returnMe; -} -- (ProvisionMessageBuilder*) mergeFrom:(ProvisionMessage*) other { - if (other == [ProvisionMessage defaultInstance]) { - return self; - } - if (other.hasIdentityKeyPublic) { - [self setIdentityKeyPublic:other.identityKeyPublic]; - } - if (other.hasIdentityKeyPrivate) { - [self setIdentityKeyPrivate:other.identityKeyPrivate]; - } - if (other.hasNumber) { - [self setNumber:other.number]; - } - if (other.hasProvisioningCode) { - [self setProvisioningCode:other.provisioningCode]; - } - [self mergeUnknownFields:other.unknownFields]; - return self; -} -- (ProvisionMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { - return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; -} -- (ProvisionMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; - while (YES) { - SInt32 tag = [input readTag]; - switch (tag) { - case 0: - [self setUnknownFields:[unknownFields build]]; - return self; - default: { - if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) { - [self setUnknownFields:[unknownFields build]]; - return self; - } - break; - } - case 10: { - [self setIdentityKeyPublic:[input readData]]; - break; - } - case 18: { - [self setIdentityKeyPrivate:[input readData]]; - break; - } - case 26: { - [self setNumber:[input readString]]; - break; - } - case 34: { - [self setProvisioningCode:[input readString]]; - break; - } - } - } -} -- (BOOL) hasIdentityKeyPublic { - return result.hasIdentityKeyPublic; -} -- (NSData*) identityKeyPublic { - return result.identityKeyPublic; -} -- (ProvisionMessageBuilder*) setIdentityKeyPublic:(NSData*) value { - result.hasIdentityKeyPublic = YES; - result.identityKeyPublic = value; - return self; -} -- (ProvisionMessageBuilder*) clearIdentityKeyPublic { - result.hasIdentityKeyPublic = NO; - result.identityKeyPublic = [NSData data]; - return self; -} -- (BOOL) hasIdentityKeyPrivate { - return result.hasIdentityKeyPrivate; -} -- (NSData*) identityKeyPrivate { - return result.identityKeyPrivate; -} -- (ProvisionMessageBuilder*) setIdentityKeyPrivate:(NSData*) value { - result.hasIdentityKeyPrivate = YES; - result.identityKeyPrivate = value; - return self; -} -- (ProvisionMessageBuilder*) clearIdentityKeyPrivate { - result.hasIdentityKeyPrivate = NO; - result.identityKeyPrivate = [NSData data]; - return self; -} -- (BOOL) hasNumber { - return result.hasNumber; -} -- (NSString*) number { - return result.number; -} -- (ProvisionMessageBuilder*) setNumber:(NSString*) value { - result.hasNumber = YES; - result.number = value; - return self; -} -- (ProvisionMessageBuilder*) clearNumber { - result.hasNumber = NO; - result.number = @""; - return self; -} -- (BOOL) hasProvisioningCode { - return result.hasProvisioningCode; -} -- (NSString*) provisioningCode { - return result.provisioningCode; -} -- (ProvisionMessageBuilder*) setProvisioningCode:(NSString*) value { - result.hasProvisioningCode = YES; - result.provisioningCode = value; - return self; -} -- (ProvisionMessageBuilder*) clearProvisioningCode { - result.hasProvisioningCode = NO; - result.provisioningCode = @""; - return self; -} -@end - - -// @@protoc_insertion_point(global_scope) diff --git a/protobuf/Provisioning.proto b/protobuf/Provisioning.proto deleted file mode 100644 index 776877c..0000000 --- a/protobuf/Provisioning.proto +++ /dev/null @@ -1,16 +0,0 @@ -package textsecure; - -option java_package = "org.whispersystems.textsecure.internal.push"; -option java_outer_classname = "ProvisioningProtos"; - -message ProvisionEnvelope { - optional bytes publicKey = 1; - optional bytes body = 2; // Encrypted ProvisionMessage -} - -message ProvisionMessage { - optional bytes identityKeyPublic = 1; - optional bytes identityKeyPrivate = 2; - optional string number = 3; - optional string provisioningCode = 4; -} diff --git a/protobuf/TextSecure.pb.h b/protobuf/TextSecure.pb.h deleted file mode 100644 index ef9aa43..0000000 --- a/protobuf/TextSecure.pb.h +++ /dev/null @@ -1,1070 +0,0 @@ -// Generated by the protocol buffer compiler. DO NOT EDIT! - -#import "ProtocolBuffers.h" - -// @@protoc_insertion_point(imports) - -@class AttachmentPointer; -@class AttachmentPointerBuilder; -@class ContactDetails; -@class ContactDetailsAvatar; -@class ContactDetailsAvatarBuilder; -@class ContactDetailsBuilder; -@class Content; -@class ContentBuilder; -@class DataMessage; -@class DataMessageBuilder; -@class Envelope; -@class EnvelopeBuilder; -@class GroupContext; -@class GroupContextBuilder; -@class GroupDetails; -@class GroupDetailsAvatar; -@class GroupDetailsAvatarBuilder; -@class GroupDetailsBuilder; -@class SyncMessage; -@class SyncMessageBuilder; -@class SyncMessageContacts; -@class SyncMessageContactsBuilder; -@class SyncMessageGroups; -@class SyncMessageGroupsBuilder; -@class SyncMessageRequest; -@class SyncMessageRequestBuilder; -@class SyncMessageSent; -@class SyncMessageSentBuilder; -#ifndef __has_feature - #define __has_feature(x) 0 // Compatibility with non-clang compilers. -#endif // __has_feature - -#ifndef NS_RETURNS_NOT_RETAINED - #if __has_feature(attribute_ns_returns_not_retained) - #define NS_RETURNS_NOT_RETAINED __attribute__((ns_returns_not_retained)) - #else - #define NS_RETURNS_NOT_RETAINED - #endif -#endif - -typedef enum { - EnvelopeTypeUnknown = 0, - EnvelopeTypeCiphertext = 1, - EnvelopeTypeKeyExchange = 2, - EnvelopeTypePrekeyBundle = 3, - EnvelopeTypeReceipt = 5, -} EnvelopeType; - -BOOL EnvelopeTypeIsValidValue(EnvelopeType value); - -typedef enum { - DataMessageFlagsEndSession = 1, -} DataMessageFlags; - -BOOL DataMessageFlagsIsValidValue(DataMessageFlags value); - -typedef enum { - SyncMessageRequestTypeUnknown = 0, - SyncMessageRequestTypeContacts = 1, - SyncMessageRequestTypeGroups = 2, -} SyncMessageRequestType; - -BOOL SyncMessageRequestTypeIsValidValue(SyncMessageRequestType value); - -typedef enum { - GroupContextTypeUnknown = 0, - GroupContextTypeUpdate = 1, - GroupContextTypeDeliver = 2, - GroupContextTypeQuit = 3, -} GroupContextType; - -BOOL GroupContextTypeIsValidValue(GroupContextType value); - - -@interface TextSecureRoot : NSObject { -} -+ (PBExtensionRegistry*) extensionRegistry; -+ (void) registerAllExtensions:(PBMutableExtensionRegistry*) registry; -@end - -@interface Envelope : PBGeneratedMessage { -@private - BOOL hasTimestamp_:1; - BOOL hasSource_:1; - BOOL hasRelay_:1; - BOOL hasLegacyMessage_:1; - BOOL hasContent_:1; - BOOL hasSourceDevice_:1; - BOOL hasType_:1; - UInt64 timestamp; - NSString* source; - NSString* relay; - NSData* legacyMessage; - NSData* content; - UInt32 sourceDevice; - EnvelopeType type; -} -- (BOOL) hasType; -- (BOOL) hasSource; -- (BOOL) hasSourceDevice; -- (BOOL) hasRelay; -- (BOOL) hasTimestamp; -- (BOOL) hasLegacyMessage; -- (BOOL) hasContent; -@property (readonly) EnvelopeType type; -@property (readonly, strong) NSString* source; -@property (readonly) UInt32 sourceDevice; -@property (readonly, strong) NSString* relay; -@property (readonly) UInt64 timestamp; -@property (readonly, strong) NSData* legacyMessage; -@property (readonly, strong) NSData* content; - -+ (Envelope*) defaultInstance; -- (Envelope*) defaultInstance; - -- (BOOL) isInitialized; -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output; -- (EnvelopeBuilder*) builder; -+ (EnvelopeBuilder*) builder; -+ (EnvelopeBuilder*) builderWithPrototype:(Envelope*) prototype; -- (EnvelopeBuilder*) toBuilder; - -+ (Envelope*) parseFromData:(NSData*) data; -+ (Envelope*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (Envelope*) parseFromInputStream:(NSInputStream*) input; -+ (Envelope*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (Envelope*) parseFromCodedInputStream:(PBCodedInputStream*) input; -+ (Envelope*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -@end - -@interface EnvelopeBuilder : PBGeneratedMessageBuilder { -@private - Envelope* result; -} - -- (Envelope*) defaultInstance; - -- (EnvelopeBuilder*) clear; -- (EnvelopeBuilder*) clone; - -- (Envelope*) build; -- (Envelope*) buildPartial; - -- (EnvelopeBuilder*) mergeFrom:(Envelope*) other; -- (EnvelopeBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input; -- (EnvelopeBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; - -- (BOOL) hasType; -- (EnvelopeType) type; -- (EnvelopeBuilder*) setType:(EnvelopeType) value; -- (EnvelopeBuilder*) clearType; - -- (BOOL) hasSource; -- (NSString*) source; -- (EnvelopeBuilder*) setSource:(NSString*) value; -- (EnvelopeBuilder*) clearSource; - -- (BOOL) hasSourceDevice; -- (UInt32) sourceDevice; -- (EnvelopeBuilder*) setSourceDevice:(UInt32) value; -- (EnvelopeBuilder*) clearSourceDevice; - -- (BOOL) hasRelay; -- (NSString*) relay; -- (EnvelopeBuilder*) setRelay:(NSString*) value; -- (EnvelopeBuilder*) clearRelay; - -- (BOOL) hasTimestamp; -- (UInt64) timestamp; -- (EnvelopeBuilder*) setTimestamp:(UInt64) value; -- (EnvelopeBuilder*) clearTimestamp; - -- (BOOL) hasLegacyMessage; -- (NSData*) legacyMessage; -- (EnvelopeBuilder*) setLegacyMessage:(NSData*) value; -- (EnvelopeBuilder*) clearLegacyMessage; - -- (BOOL) hasContent; -- (NSData*) content; -- (EnvelopeBuilder*) setContent:(NSData*) value; -- (EnvelopeBuilder*) clearContent; -@end - -@interface Content : PBGeneratedMessage { -@private - BOOL hasDataMessage_:1; - BOOL hasSyncMessage_:1; - DataMessage* dataMessage; - SyncMessage* syncMessage; -} -- (BOOL) hasDataMessage; -- (BOOL) hasSyncMessage; -@property (readonly, strong) DataMessage* dataMessage; -@property (readonly, strong) SyncMessage* syncMessage; - -+ (Content*) defaultInstance; -- (Content*) defaultInstance; - -- (BOOL) isInitialized; -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output; -- (ContentBuilder*) builder; -+ (ContentBuilder*) builder; -+ (ContentBuilder*) builderWithPrototype:(Content*) prototype; -- (ContentBuilder*) toBuilder; - -+ (Content*) parseFromData:(NSData*) data; -+ (Content*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (Content*) parseFromInputStream:(NSInputStream*) input; -+ (Content*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (Content*) parseFromCodedInputStream:(PBCodedInputStream*) input; -+ (Content*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -@end - -@interface ContentBuilder : PBGeneratedMessageBuilder { -@private - Content* result; -} - -- (Content*) defaultInstance; - -- (ContentBuilder*) clear; -- (ContentBuilder*) clone; - -- (Content*) build; -- (Content*) buildPartial; - -- (ContentBuilder*) mergeFrom:(Content*) other; -- (ContentBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input; -- (ContentBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; - -- (BOOL) hasDataMessage; -- (DataMessage*) dataMessage; -- (ContentBuilder*) setDataMessage:(DataMessage*) value; -- (ContentBuilder*) setDataMessageBuilder:(DataMessageBuilder*) builderForValue; -- (ContentBuilder*) mergeDataMessage:(DataMessage*) value; -- (ContentBuilder*) clearDataMessage; - -- (BOOL) hasSyncMessage; -- (SyncMessage*) syncMessage; -- (ContentBuilder*) setSyncMessage:(SyncMessage*) value; -- (ContentBuilder*) setSyncMessageBuilder:(SyncMessageBuilder*) builderForValue; -- (ContentBuilder*) mergeSyncMessage:(SyncMessage*) value; -- (ContentBuilder*) clearSyncMessage; -@end - -@interface DataMessage : PBGeneratedMessage { -@private - BOOL hasBody_:1; - BOOL hasGroup_:1; - BOOL hasFlags_:1; - NSString* body; - GroupContext* group; - UInt32 flags; - NSMutableArray * attachmentsArray; -} -- (BOOL) hasBody; -- (BOOL) hasGroup; -- (BOOL) hasFlags; -@property (readonly, strong) NSString* body; -@property (readonly, strong) NSArray * attachments; -@property (readonly, strong) GroupContext* group; -@property (readonly) UInt32 flags; -- (AttachmentPointer*)attachmentsAtIndex:(NSUInteger)index; - -+ (DataMessage*) defaultInstance; -- (DataMessage*) defaultInstance; - -- (BOOL) isInitialized; -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output; -- (DataMessageBuilder*) builder; -+ (DataMessageBuilder*) builder; -+ (DataMessageBuilder*) builderWithPrototype:(DataMessage*) prototype; -- (DataMessageBuilder*) toBuilder; - -+ (DataMessage*) parseFromData:(NSData*) data; -+ (DataMessage*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (DataMessage*) parseFromInputStream:(NSInputStream*) input; -+ (DataMessage*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (DataMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input; -+ (DataMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -@end - -@interface DataMessageBuilder : PBGeneratedMessageBuilder { -@private - DataMessage* result; -} - -- (DataMessage*) defaultInstance; - -- (DataMessageBuilder*) clear; -- (DataMessageBuilder*) clone; - -- (DataMessage*) build; -- (DataMessage*) buildPartial; - -- (DataMessageBuilder*) mergeFrom:(DataMessage*) other; -- (DataMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input; -- (DataMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; - -- (BOOL) hasBody; -- (NSString*) body; -- (DataMessageBuilder*) setBody:(NSString*) value; -- (DataMessageBuilder*) clearBody; - -- (NSMutableArray *)attachments; -- (AttachmentPointer*)attachmentsAtIndex:(NSUInteger)index; -- (DataMessageBuilder *)addAttachments:(AttachmentPointer*)value; -- (DataMessageBuilder *)setAttachmentsArray:(NSArray *)array; -- (DataMessageBuilder *)clearAttachments; - -- (BOOL) hasGroup; -- (GroupContext*) group; -- (DataMessageBuilder*) setGroup:(GroupContext*) value; -- (DataMessageBuilder*) setGroupBuilder:(GroupContextBuilder*) builderForValue; -- (DataMessageBuilder*) mergeGroup:(GroupContext*) value; -- (DataMessageBuilder*) clearGroup; - -- (BOOL) hasFlags; -- (UInt32) flags; -- (DataMessageBuilder*) setFlags:(UInt32) value; -- (DataMessageBuilder*) clearFlags; -@end - -@interface SyncMessage : PBGeneratedMessage { -@private - BOOL hasSent_:1; - BOOL hasContacts_:1; - BOOL hasGroups_:1; - BOOL hasRequest_:1; - SyncMessageSent* sent; - SyncMessageContacts* contacts; - SyncMessageGroups* groups; - SyncMessageRequest* request; -} -- (BOOL) hasSent; -- (BOOL) hasContacts; -- (BOOL) hasGroups; -- (BOOL) hasRequest; -@property (readonly, strong) SyncMessageSent* sent; -@property (readonly, strong) SyncMessageContacts* contacts; -@property (readonly, strong) SyncMessageGroups* groups; -@property (readonly, strong) SyncMessageRequest* request; - -+ (SyncMessage*) defaultInstance; -- (SyncMessage*) defaultInstance; - -- (BOOL) isInitialized; -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output; -- (SyncMessageBuilder*) builder; -+ (SyncMessageBuilder*) builder; -+ (SyncMessageBuilder*) builderWithPrototype:(SyncMessage*) prototype; -- (SyncMessageBuilder*) toBuilder; - -+ (SyncMessage*) parseFromData:(NSData*) data; -+ (SyncMessage*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (SyncMessage*) parseFromInputStream:(NSInputStream*) input; -+ (SyncMessage*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (SyncMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input; -+ (SyncMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -@end - -@interface SyncMessageSent : PBGeneratedMessage { -@private - BOOL hasTimestamp_:1; - BOOL hasDestination_:1; - BOOL hasMessage_:1; - UInt64 timestamp; - NSString* destination; - DataMessage* message; -} -- (BOOL) hasDestination; -- (BOOL) hasTimestamp; -- (BOOL) hasMessage; -@property (readonly, strong) NSString* destination; -@property (readonly) UInt64 timestamp; -@property (readonly, strong) DataMessage* message; - -+ (SyncMessageSent*) defaultInstance; -- (SyncMessageSent*) defaultInstance; - -- (BOOL) isInitialized; -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output; -- (SyncMessageSentBuilder*) builder; -+ (SyncMessageSentBuilder*) builder; -+ (SyncMessageSentBuilder*) builderWithPrototype:(SyncMessageSent*) prototype; -- (SyncMessageSentBuilder*) toBuilder; - -+ (SyncMessageSent*) parseFromData:(NSData*) data; -+ (SyncMessageSent*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (SyncMessageSent*) parseFromInputStream:(NSInputStream*) input; -+ (SyncMessageSent*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (SyncMessageSent*) parseFromCodedInputStream:(PBCodedInputStream*) input; -+ (SyncMessageSent*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -@end - -@interface SyncMessageSentBuilder : PBGeneratedMessageBuilder { -@private - SyncMessageSent* result; -} - -- (SyncMessageSent*) defaultInstance; - -- (SyncMessageSentBuilder*) clear; -- (SyncMessageSentBuilder*) clone; - -- (SyncMessageSent*) build; -- (SyncMessageSent*) buildPartial; - -- (SyncMessageSentBuilder*) mergeFrom:(SyncMessageSent*) other; -- (SyncMessageSentBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input; -- (SyncMessageSentBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; - -- (BOOL) hasDestination; -- (NSString*) destination; -- (SyncMessageSentBuilder*) setDestination:(NSString*) value; -- (SyncMessageSentBuilder*) clearDestination; - -- (BOOL) hasTimestamp; -- (UInt64) timestamp; -- (SyncMessageSentBuilder*) setTimestamp:(UInt64) value; -- (SyncMessageSentBuilder*) clearTimestamp; - -- (BOOL) hasMessage; -- (DataMessage*) message; -- (SyncMessageSentBuilder*) setMessage:(DataMessage*) value; -- (SyncMessageSentBuilder*) setMessageBuilder:(DataMessageBuilder*) builderForValue; -- (SyncMessageSentBuilder*) mergeMessage:(DataMessage*) value; -- (SyncMessageSentBuilder*) clearMessage; -@end - -@interface SyncMessageContacts : PBGeneratedMessage { -@private - BOOL hasBlob_:1; - AttachmentPointer* blob; -} -- (BOOL) hasBlob; -@property (readonly, strong) AttachmentPointer* blob; - -+ (SyncMessageContacts*) defaultInstance; -- (SyncMessageContacts*) defaultInstance; - -- (BOOL) isInitialized; -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output; -- (SyncMessageContactsBuilder*) builder; -+ (SyncMessageContactsBuilder*) builder; -+ (SyncMessageContactsBuilder*) builderWithPrototype:(SyncMessageContacts*) prototype; -- (SyncMessageContactsBuilder*) toBuilder; - -+ (SyncMessageContacts*) parseFromData:(NSData*) data; -+ (SyncMessageContacts*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (SyncMessageContacts*) parseFromInputStream:(NSInputStream*) input; -+ (SyncMessageContacts*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (SyncMessageContacts*) parseFromCodedInputStream:(PBCodedInputStream*) input; -+ (SyncMessageContacts*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -@end - -@interface SyncMessageContactsBuilder : PBGeneratedMessageBuilder { -@private - SyncMessageContacts* result; -} - -- (SyncMessageContacts*) defaultInstance; - -- (SyncMessageContactsBuilder*) clear; -- (SyncMessageContactsBuilder*) clone; - -- (SyncMessageContacts*) build; -- (SyncMessageContacts*) buildPartial; - -- (SyncMessageContactsBuilder*) mergeFrom:(SyncMessageContacts*) other; -- (SyncMessageContactsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input; -- (SyncMessageContactsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; - -- (BOOL) hasBlob; -- (AttachmentPointer*) blob; -- (SyncMessageContactsBuilder*) setBlob:(AttachmentPointer*) value; -- (SyncMessageContactsBuilder*) setBlobBuilder:(AttachmentPointerBuilder*) builderForValue; -- (SyncMessageContactsBuilder*) mergeBlob:(AttachmentPointer*) value; -- (SyncMessageContactsBuilder*) clearBlob; -@end - -@interface SyncMessageGroups : PBGeneratedMessage { -@private - BOOL hasBlob_:1; - AttachmentPointer* blob; -} -- (BOOL) hasBlob; -@property (readonly, strong) AttachmentPointer* blob; - -+ (SyncMessageGroups*) defaultInstance; -- (SyncMessageGroups*) defaultInstance; - -- (BOOL) isInitialized; -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output; -- (SyncMessageGroupsBuilder*) builder; -+ (SyncMessageGroupsBuilder*) builder; -+ (SyncMessageGroupsBuilder*) builderWithPrototype:(SyncMessageGroups*) prototype; -- (SyncMessageGroupsBuilder*) toBuilder; - -+ (SyncMessageGroups*) parseFromData:(NSData*) data; -+ (SyncMessageGroups*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (SyncMessageGroups*) parseFromInputStream:(NSInputStream*) input; -+ (SyncMessageGroups*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (SyncMessageGroups*) parseFromCodedInputStream:(PBCodedInputStream*) input; -+ (SyncMessageGroups*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -@end - -@interface SyncMessageGroupsBuilder : PBGeneratedMessageBuilder { -@private - SyncMessageGroups* result; -} - -- (SyncMessageGroups*) defaultInstance; - -- (SyncMessageGroupsBuilder*) clear; -- (SyncMessageGroupsBuilder*) clone; - -- (SyncMessageGroups*) build; -- (SyncMessageGroups*) buildPartial; - -- (SyncMessageGroupsBuilder*) mergeFrom:(SyncMessageGroups*) other; -- (SyncMessageGroupsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input; -- (SyncMessageGroupsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; - -- (BOOL) hasBlob; -- (AttachmentPointer*) blob; -- (SyncMessageGroupsBuilder*) setBlob:(AttachmentPointer*) value; -- (SyncMessageGroupsBuilder*) setBlobBuilder:(AttachmentPointerBuilder*) builderForValue; -- (SyncMessageGroupsBuilder*) mergeBlob:(AttachmentPointer*) value; -- (SyncMessageGroupsBuilder*) clearBlob; -@end - -@interface SyncMessageRequest : PBGeneratedMessage { -@private - BOOL hasType_:1; - SyncMessageRequestType type; -} -- (BOOL) hasType; -@property (readonly) SyncMessageRequestType type; - -+ (SyncMessageRequest*) defaultInstance; -- (SyncMessageRequest*) defaultInstance; - -- (BOOL) isInitialized; -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output; -- (SyncMessageRequestBuilder*) builder; -+ (SyncMessageRequestBuilder*) builder; -+ (SyncMessageRequestBuilder*) builderWithPrototype:(SyncMessageRequest*) prototype; -- (SyncMessageRequestBuilder*) toBuilder; - -+ (SyncMessageRequest*) parseFromData:(NSData*) data; -+ (SyncMessageRequest*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (SyncMessageRequest*) parseFromInputStream:(NSInputStream*) input; -+ (SyncMessageRequest*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (SyncMessageRequest*) parseFromCodedInputStream:(PBCodedInputStream*) input; -+ (SyncMessageRequest*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -@end - -@interface SyncMessageRequestBuilder : PBGeneratedMessageBuilder { -@private - SyncMessageRequest* result; -} - -- (SyncMessageRequest*) defaultInstance; - -- (SyncMessageRequestBuilder*) clear; -- (SyncMessageRequestBuilder*) clone; - -- (SyncMessageRequest*) build; -- (SyncMessageRequest*) buildPartial; - -- (SyncMessageRequestBuilder*) mergeFrom:(SyncMessageRequest*) other; -- (SyncMessageRequestBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input; -- (SyncMessageRequestBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; - -- (BOOL) hasType; -- (SyncMessageRequestType) type; -- (SyncMessageRequestBuilder*) setType:(SyncMessageRequestType) value; -- (SyncMessageRequestBuilder*) clearType; -@end - -@interface SyncMessageBuilder : PBGeneratedMessageBuilder { -@private - SyncMessage* result; -} - -- (SyncMessage*) defaultInstance; - -- (SyncMessageBuilder*) clear; -- (SyncMessageBuilder*) clone; - -- (SyncMessage*) build; -- (SyncMessage*) buildPartial; - -- (SyncMessageBuilder*) mergeFrom:(SyncMessage*) other; -- (SyncMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input; -- (SyncMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; - -- (BOOL) hasSent; -- (SyncMessageSent*) sent; -- (SyncMessageBuilder*) setSent:(SyncMessageSent*) value; -- (SyncMessageBuilder*) setSentBuilder:(SyncMessageSentBuilder*) builderForValue; -- (SyncMessageBuilder*) mergeSent:(SyncMessageSent*) value; -- (SyncMessageBuilder*) clearSent; - -- (BOOL) hasContacts; -- (SyncMessageContacts*) contacts; -- (SyncMessageBuilder*) setContacts:(SyncMessageContacts*) value; -- (SyncMessageBuilder*) setContactsBuilder:(SyncMessageContactsBuilder*) builderForValue; -- (SyncMessageBuilder*) mergeContacts:(SyncMessageContacts*) value; -- (SyncMessageBuilder*) clearContacts; - -- (BOOL) hasGroups; -- (SyncMessageGroups*) groups; -- (SyncMessageBuilder*) setGroups:(SyncMessageGroups*) value; -- (SyncMessageBuilder*) setGroupsBuilder:(SyncMessageGroupsBuilder*) builderForValue; -- (SyncMessageBuilder*) mergeGroups:(SyncMessageGroups*) value; -- (SyncMessageBuilder*) clearGroups; - -- (BOOL) hasRequest; -- (SyncMessageRequest*) request; -- (SyncMessageBuilder*) setRequest:(SyncMessageRequest*) value; -- (SyncMessageBuilder*) setRequestBuilder:(SyncMessageRequestBuilder*) builderForValue; -- (SyncMessageBuilder*) mergeRequest:(SyncMessageRequest*) value; -- (SyncMessageBuilder*) clearRequest; -@end - -@interface AttachmentPointer : PBGeneratedMessage { -@private - BOOL hasId_:1; - BOOL hasContentType_:1; - BOOL hasKey_:1; - BOOL hasThumbnail_:1; - BOOL hasSize_:1; - UInt64 id; - NSString* contentType; - NSData* key; - NSData* thumbnail; - UInt32 size; -} -- (BOOL) hasId; -- (BOOL) hasContentType; -- (BOOL) hasKey; -- (BOOL) hasSize; -- (BOOL) hasThumbnail; -@property (readonly) UInt64 id; -@property (readonly, strong) NSString* contentType; -@property (readonly, strong) NSData* key; -@property (readonly) UInt32 size; -@property (readonly, strong) NSData* thumbnail; - -+ (AttachmentPointer*) defaultInstance; -- (AttachmentPointer*) defaultInstance; - -- (BOOL) isInitialized; -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output; -- (AttachmentPointerBuilder*) builder; -+ (AttachmentPointerBuilder*) builder; -+ (AttachmentPointerBuilder*) builderWithPrototype:(AttachmentPointer*) prototype; -- (AttachmentPointerBuilder*) toBuilder; - -+ (AttachmentPointer*) parseFromData:(NSData*) data; -+ (AttachmentPointer*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (AttachmentPointer*) parseFromInputStream:(NSInputStream*) input; -+ (AttachmentPointer*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (AttachmentPointer*) parseFromCodedInputStream:(PBCodedInputStream*) input; -+ (AttachmentPointer*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -@end - -@interface AttachmentPointerBuilder : PBGeneratedMessageBuilder { -@private - AttachmentPointer* result; -} - -- (AttachmentPointer*) defaultInstance; - -- (AttachmentPointerBuilder*) clear; -- (AttachmentPointerBuilder*) clone; - -- (AttachmentPointer*) build; -- (AttachmentPointer*) buildPartial; - -- (AttachmentPointerBuilder*) mergeFrom:(AttachmentPointer*) other; -- (AttachmentPointerBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input; -- (AttachmentPointerBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; - -- (BOOL) hasId; -- (UInt64) id; -- (AttachmentPointerBuilder*) setId:(UInt64) value; -- (AttachmentPointerBuilder*) clearId; - -- (BOOL) hasContentType; -- (NSString*) contentType; -- (AttachmentPointerBuilder*) setContentType:(NSString*) value; -- (AttachmentPointerBuilder*) clearContentType; - -- (BOOL) hasKey; -- (NSData*) key; -- (AttachmentPointerBuilder*) setKey:(NSData*) value; -- (AttachmentPointerBuilder*) clearKey; - -- (BOOL) hasSize; -- (UInt32) size; -- (AttachmentPointerBuilder*) setSize:(UInt32) value; -- (AttachmentPointerBuilder*) clearSize; - -- (BOOL) hasThumbnail; -- (NSData*) thumbnail; -- (AttachmentPointerBuilder*) setThumbnail:(NSData*) value; -- (AttachmentPointerBuilder*) clearThumbnail; -@end - -@interface GroupContext : PBGeneratedMessage { -@private - BOOL hasName_:1; - BOOL hasAvatar_:1; - BOOL hasId_:1; - BOOL hasType_:1; - NSString* name; - AttachmentPointer* avatar; - NSData* id; - GroupContextType type; - NSMutableArray * membersArray; -} -- (BOOL) hasId; -- (BOOL) hasType; -- (BOOL) hasName; -- (BOOL) hasAvatar; -@property (readonly, strong) NSData* id; -@property (readonly) GroupContextType type; -@property (readonly, strong) NSString* name; -@property (readonly, strong) PBArray * members; -@property (readonly, strong) AttachmentPointer* avatar; -- (NSString*)membersAtIndex:(NSUInteger)index; - -+ (GroupContext*) defaultInstance; -- (GroupContext*) defaultInstance; - -- (BOOL) isInitialized; -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output; -- (GroupContextBuilder*) builder; -+ (GroupContextBuilder*) builder; -+ (GroupContextBuilder*) builderWithPrototype:(GroupContext*) prototype; -- (GroupContextBuilder*) toBuilder; - -+ (GroupContext*) parseFromData:(NSData*) data; -+ (GroupContext*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (GroupContext*) parseFromInputStream:(NSInputStream*) input; -+ (GroupContext*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (GroupContext*) parseFromCodedInputStream:(PBCodedInputStream*) input; -+ (GroupContext*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -@end - -@interface GroupContextBuilder : PBGeneratedMessageBuilder { -@private - GroupContext* result; -} - -- (GroupContext*) defaultInstance; - -- (GroupContextBuilder*) clear; -- (GroupContextBuilder*) clone; - -- (GroupContext*) build; -- (GroupContext*) buildPartial; - -- (GroupContextBuilder*) mergeFrom:(GroupContext*) other; -- (GroupContextBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input; -- (GroupContextBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; - -- (BOOL) hasId; -- (NSData*) id; -- (GroupContextBuilder*) setId:(NSData*) value; -- (GroupContextBuilder*) clearId; - -- (BOOL) hasType; -- (GroupContextType) type; -- (GroupContextBuilder*) setType:(GroupContextType) value; -- (GroupContextBuilder*) clearType; - -- (BOOL) hasName; -- (NSString*) name; -- (GroupContextBuilder*) setName:(NSString*) value; -- (GroupContextBuilder*) clearName; - -- (NSMutableArray *)members; -- (NSString*)membersAtIndex:(NSUInteger)index; -- (GroupContextBuilder *)addMembers:(NSString*)value; -- (GroupContextBuilder *)setMembersArray:(NSArray *)array; -- (GroupContextBuilder *)clearMembers; - -- (BOOL) hasAvatar; -- (AttachmentPointer*) avatar; -- (GroupContextBuilder*) setAvatar:(AttachmentPointer*) value; -- (GroupContextBuilder*) setAvatarBuilder:(AttachmentPointerBuilder*) builderForValue; -- (GroupContextBuilder*) mergeAvatar:(AttachmentPointer*) value; -- (GroupContextBuilder*) clearAvatar; -@end - -@interface ContactDetails : PBGeneratedMessage { -@private - BOOL hasNumber_:1; - BOOL hasName_:1; - BOOL hasAvatar_:1; - NSString* number; - NSString* name; - ContactDetailsAvatar* avatar; -} -- (BOOL) hasNumber; -- (BOOL) hasName; -- (BOOL) hasAvatar; -@property (readonly, strong) NSString* number; -@property (readonly, strong) NSString* name; -@property (readonly, strong) ContactDetailsAvatar* avatar; - -+ (ContactDetails*) defaultInstance; -- (ContactDetails*) defaultInstance; - -- (BOOL) isInitialized; -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output; -- (ContactDetailsBuilder*) builder; -+ (ContactDetailsBuilder*) builder; -+ (ContactDetailsBuilder*) builderWithPrototype:(ContactDetails*) prototype; -- (ContactDetailsBuilder*) toBuilder; - -+ (ContactDetails*) parseFromData:(NSData*) data; -+ (ContactDetails*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (ContactDetails*) parseFromInputStream:(NSInputStream*) input; -+ (ContactDetails*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (ContactDetails*) parseFromCodedInputStream:(PBCodedInputStream*) input; -+ (ContactDetails*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -@end - -@interface ContactDetailsAvatar : PBGeneratedMessage { -@private - BOOL hasContentType_:1; - BOOL hasLength_:1; - NSString* contentType; - UInt32 length; -} -- (BOOL) hasContentType; -- (BOOL) hasLength; -@property (readonly, strong) NSString* contentType; -@property (readonly) UInt32 length; - -+ (ContactDetailsAvatar*) defaultInstance; -- (ContactDetailsAvatar*) defaultInstance; - -- (BOOL) isInitialized; -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output; -- (ContactDetailsAvatarBuilder*) builder; -+ (ContactDetailsAvatarBuilder*) builder; -+ (ContactDetailsAvatarBuilder*) builderWithPrototype:(ContactDetailsAvatar*) prototype; -- (ContactDetailsAvatarBuilder*) toBuilder; - -+ (ContactDetailsAvatar*) parseFromData:(NSData*) data; -+ (ContactDetailsAvatar*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (ContactDetailsAvatar*) parseFromInputStream:(NSInputStream*) input; -+ (ContactDetailsAvatar*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (ContactDetailsAvatar*) parseFromCodedInputStream:(PBCodedInputStream*) input; -+ (ContactDetailsAvatar*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -@end - -@interface ContactDetailsAvatarBuilder : PBGeneratedMessageBuilder { -@private - ContactDetailsAvatar* result; -} - -- (ContactDetailsAvatar*) defaultInstance; - -- (ContactDetailsAvatarBuilder*) clear; -- (ContactDetailsAvatarBuilder*) clone; - -- (ContactDetailsAvatar*) build; -- (ContactDetailsAvatar*) buildPartial; - -- (ContactDetailsAvatarBuilder*) mergeFrom:(ContactDetailsAvatar*) other; -- (ContactDetailsAvatarBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input; -- (ContactDetailsAvatarBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; - -- (BOOL) hasContentType; -- (NSString*) contentType; -- (ContactDetailsAvatarBuilder*) setContentType:(NSString*) value; -- (ContactDetailsAvatarBuilder*) clearContentType; - -- (BOOL) hasLength; -- (UInt32) length; -- (ContactDetailsAvatarBuilder*) setLength:(UInt32) value; -- (ContactDetailsAvatarBuilder*) clearLength; -@end - -@interface ContactDetailsBuilder : PBGeneratedMessageBuilder { -@private - ContactDetails* result; -} - -- (ContactDetails*) defaultInstance; - -- (ContactDetailsBuilder*) clear; -- (ContactDetailsBuilder*) clone; - -- (ContactDetails*) build; -- (ContactDetails*) buildPartial; - -- (ContactDetailsBuilder*) mergeFrom:(ContactDetails*) other; -- (ContactDetailsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input; -- (ContactDetailsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; - -- (BOOL) hasNumber; -- (NSString*) number; -- (ContactDetailsBuilder*) setNumber:(NSString*) value; -- (ContactDetailsBuilder*) clearNumber; - -- (BOOL) hasName; -- (NSString*) name; -- (ContactDetailsBuilder*) setName:(NSString*) value; -- (ContactDetailsBuilder*) clearName; - -- (BOOL) hasAvatar; -- (ContactDetailsAvatar*) avatar; -- (ContactDetailsBuilder*) setAvatar:(ContactDetailsAvatar*) value; -- (ContactDetailsBuilder*) setAvatarBuilder:(ContactDetailsAvatarBuilder*) builderForValue; -- (ContactDetailsBuilder*) mergeAvatar:(ContactDetailsAvatar*) value; -- (ContactDetailsBuilder*) clearAvatar; -@end - -@interface GroupDetails : PBGeneratedMessage { -@private - BOOL hasName_:1; - BOOL hasAvatar_:1; - BOOL hasId_:1; - NSString* name; - GroupDetailsAvatar* avatar; - NSData* id; - NSMutableArray * membersArray; -} -- (BOOL) hasId; -- (BOOL) hasName; -- (BOOL) hasAvatar; -@property (readonly, strong) NSData* id; -@property (readonly, strong) NSString* name; -@property (readonly, strong) PBArray * members; -@property (readonly, strong) GroupDetailsAvatar* avatar; -- (NSString*)membersAtIndex:(NSUInteger)index; - -+ (GroupDetails*) defaultInstance; -- (GroupDetails*) defaultInstance; - -- (BOOL) isInitialized; -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output; -- (GroupDetailsBuilder*) builder; -+ (GroupDetailsBuilder*) builder; -+ (GroupDetailsBuilder*) builderWithPrototype:(GroupDetails*) prototype; -- (GroupDetailsBuilder*) toBuilder; - -+ (GroupDetails*) parseFromData:(NSData*) data; -+ (GroupDetails*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (GroupDetails*) parseFromInputStream:(NSInputStream*) input; -+ (GroupDetails*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (GroupDetails*) parseFromCodedInputStream:(PBCodedInputStream*) input; -+ (GroupDetails*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -@end - -@interface GroupDetailsAvatar : PBGeneratedMessage { -@private - BOOL hasContentType_:1; - BOOL hasLength_:1; - NSString* contentType; - UInt32 length; -} -- (BOOL) hasContentType; -- (BOOL) hasLength; -@property (readonly, strong) NSString* contentType; -@property (readonly) UInt32 length; - -+ (GroupDetailsAvatar*) defaultInstance; -- (GroupDetailsAvatar*) defaultInstance; - -- (BOOL) isInitialized; -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output; -- (GroupDetailsAvatarBuilder*) builder; -+ (GroupDetailsAvatarBuilder*) builder; -+ (GroupDetailsAvatarBuilder*) builderWithPrototype:(GroupDetailsAvatar*) prototype; -- (GroupDetailsAvatarBuilder*) toBuilder; - -+ (GroupDetailsAvatar*) parseFromData:(NSData*) data; -+ (GroupDetailsAvatar*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (GroupDetailsAvatar*) parseFromInputStream:(NSInputStream*) input; -+ (GroupDetailsAvatar*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (GroupDetailsAvatar*) parseFromCodedInputStream:(PBCodedInputStream*) input; -+ (GroupDetailsAvatar*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -@end - -@interface GroupDetailsAvatarBuilder : PBGeneratedMessageBuilder { -@private - GroupDetailsAvatar* result; -} - -- (GroupDetailsAvatar*) defaultInstance; - -- (GroupDetailsAvatarBuilder*) clear; -- (GroupDetailsAvatarBuilder*) clone; - -- (GroupDetailsAvatar*) build; -- (GroupDetailsAvatar*) buildPartial; - -- (GroupDetailsAvatarBuilder*) mergeFrom:(GroupDetailsAvatar*) other; -- (GroupDetailsAvatarBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input; -- (GroupDetailsAvatarBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; - -- (BOOL) hasContentType; -- (NSString*) contentType; -- (GroupDetailsAvatarBuilder*) setContentType:(NSString*) value; -- (GroupDetailsAvatarBuilder*) clearContentType; - -- (BOOL) hasLength; -- (UInt32) length; -- (GroupDetailsAvatarBuilder*) setLength:(UInt32) value; -- (GroupDetailsAvatarBuilder*) clearLength; -@end - -@interface GroupDetailsBuilder : PBGeneratedMessageBuilder { -@private - GroupDetails* result; -} - -- (GroupDetails*) defaultInstance; - -- (GroupDetailsBuilder*) clear; -- (GroupDetailsBuilder*) clone; - -- (GroupDetails*) build; -- (GroupDetails*) buildPartial; - -- (GroupDetailsBuilder*) mergeFrom:(GroupDetails*) other; -- (GroupDetailsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input; -- (GroupDetailsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; - -- (BOOL) hasId; -- (NSData*) id; -- (GroupDetailsBuilder*) setId:(NSData*) value; -- (GroupDetailsBuilder*) clearId; - -- (BOOL) hasName; -- (NSString*) name; -- (GroupDetailsBuilder*) setName:(NSString*) value; -- (GroupDetailsBuilder*) clearName; - -- (NSMutableArray *)members; -- (NSString*)membersAtIndex:(NSUInteger)index; -- (GroupDetailsBuilder *)addMembers:(NSString*)value; -- (GroupDetailsBuilder *)setMembersArray:(NSArray *)array; -- (GroupDetailsBuilder *)clearMembers; - -- (BOOL) hasAvatar; -- (GroupDetailsAvatar*) avatar; -- (GroupDetailsBuilder*) setAvatar:(GroupDetailsAvatar*) value; -- (GroupDetailsBuilder*) setAvatarBuilder:(GroupDetailsAvatarBuilder*) builderForValue; -- (GroupDetailsBuilder*) mergeAvatar:(GroupDetailsAvatar*) value; -- (GroupDetailsBuilder*) clearAvatar; -@end - - -// @@protoc_insertion_point(global_scope) diff --git a/protobuf/TextSecure.pb.m b/protobuf/TextSecure.pb.m deleted file mode 100644 index 35ca7dd..0000000 --- a/protobuf/TextSecure.pb.m +++ /dev/null @@ -1,4587 +0,0 @@ -// Generated by the protocol buffer compiler. DO NOT EDIT! - -#import "TextSecure.pb.h" -// @@protoc_insertion_point(imports) - -@implementation TextSecureRoot -static PBExtensionRegistry* extensionRegistry = nil; -+ (PBExtensionRegistry*) extensionRegistry { - return extensionRegistry; -} - -+ (void) initialize { - if (self == [TextSecureRoot class]) { - PBMutableExtensionRegistry* registry = [PBMutableExtensionRegistry registry]; - [self registerAllExtensions:registry]; - extensionRegistry = registry; - } -} -+ (void) registerAllExtensions:(PBMutableExtensionRegistry*) registry { -} -@end - -@interface Envelope () -@property EnvelopeType type; -@property (strong) NSString* source; -@property UInt32 sourceDevice; -@property (strong) NSString* relay; -@property UInt64 timestamp; -@property (strong) NSData* legacyMessage; -@property (strong) NSData* content; -@end - -@implementation Envelope - -- (BOOL) hasType { - return !!hasType_; -} -- (void) setHasType:(BOOL) value_ { - hasType_ = !!value_; -} -@synthesize type; -- (BOOL) hasSource { - return !!hasSource_; -} -- (void) setHasSource:(BOOL) value_ { - hasSource_ = !!value_; -} -@synthesize source; -- (BOOL) hasSourceDevice { - return !!hasSourceDevice_; -} -- (void) setHasSourceDevice:(BOOL) value_ { - hasSourceDevice_ = !!value_; -} -@synthesize sourceDevice; -- (BOOL) hasRelay { - return !!hasRelay_; -} -- (void) setHasRelay:(BOOL) value_ { - hasRelay_ = !!value_; -} -@synthesize relay; -- (BOOL) hasTimestamp { - return !!hasTimestamp_; -} -- (void) setHasTimestamp:(BOOL) value_ { - hasTimestamp_ = !!value_; -} -@synthesize timestamp; -- (BOOL) hasLegacyMessage { - return !!hasLegacyMessage_; -} -- (void) setHasLegacyMessage:(BOOL) value_ { - hasLegacyMessage_ = !!value_; -} -@synthesize legacyMessage; -- (BOOL) hasContent { - return !!hasContent_; -} -- (void) setHasContent:(BOOL) value_ { - hasContent_ = !!value_; -} -@synthesize content; -- (id) init { - if ((self = [super init])) { - self.type = EnvelopeTypeUnknown; - self.source = @""; - self.sourceDevice = 0; - self.relay = @""; - self.timestamp = 0L; - self.legacyMessage = [NSData data]; - self.content = [NSData data]; - } - return self; -} -static Envelope* defaultEnvelopeInstance = nil; -+ (void) initialize { - if (self == [Envelope class]) { - defaultEnvelopeInstance = [[Envelope alloc] init]; - } -} -+ (Envelope*) defaultInstance { - return defaultEnvelopeInstance; -} -- (Envelope*) defaultInstance { - return defaultEnvelopeInstance; -} -- (BOOL) isInitialized { - return YES; -} -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { - if (self.hasType) { - [output writeEnum:1 value:self.type]; - } - if (self.hasSource) { - [output writeString:2 value:self.source]; - } - if (self.hasRelay) { - [output writeString:3 value:self.relay]; - } - if (self.hasTimestamp) { - [output writeUInt64:5 value:self.timestamp]; - } - if (self.hasLegacyMessage) { - [output writeData:6 value:self.legacyMessage]; - } - if (self.hasSourceDevice) { - [output writeUInt32:7 value:self.sourceDevice]; - } - if (self.hasContent) { - [output writeData:8 value:self.content]; - } - [self.unknownFields writeToCodedOutputStream:output]; -} -- (SInt32) serializedSize { - __block SInt32 size_ = memoizedSerializedSize; - if (size_ != -1) { - return size_; - } - - size_ = 0; - if (self.hasType) { - size_ += computeEnumSize(1, self.type); - } - if (self.hasSource) { - size_ += computeStringSize(2, self.source); - } - if (self.hasRelay) { - size_ += computeStringSize(3, self.relay); - } - if (self.hasTimestamp) { - size_ += computeUInt64Size(5, self.timestamp); - } - if (self.hasLegacyMessage) { - size_ += computeDataSize(6, self.legacyMessage); - } - if (self.hasSourceDevice) { - size_ += computeUInt32Size(7, self.sourceDevice); - } - if (self.hasContent) { - size_ += computeDataSize(8, self.content); - } - size_ += self.unknownFields.serializedSize; - memoizedSerializedSize = size_; - return size_; -} -+ (Envelope*) parseFromData:(NSData*) data { - return (Envelope*)[[[Envelope builder] mergeFromData:data] build]; -} -+ (Envelope*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (Envelope*)[[[Envelope builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; -} -+ (Envelope*) parseFromInputStream:(NSInputStream*) input { - return (Envelope*)[[[Envelope builder] mergeFromInputStream:input] build]; -} -+ (Envelope*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (Envelope*)[[[Envelope builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (Envelope*) parseFromCodedInputStream:(PBCodedInputStream*) input { - return (Envelope*)[[[Envelope builder] mergeFromCodedInputStream:input] build]; -} -+ (Envelope*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (Envelope*)[[[Envelope builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (EnvelopeBuilder*) builder { - return [[EnvelopeBuilder alloc] init]; -} -+ (EnvelopeBuilder*) builderWithPrototype:(Envelope*) prototype { - return [[Envelope builder] mergeFrom:prototype]; -} -- (EnvelopeBuilder*) builder { - return [Envelope builder]; -} -- (EnvelopeBuilder*) toBuilder { - return [Envelope builderWithPrototype:self]; -} -- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { - if (self.hasType) { - [output appendFormat:@"%@%@: %d\n", indent, @"type", self.type]; - } - if (self.hasSource) { - [output appendFormat:@"%@%@: %@\n", indent, @"source", self.source]; - } - if (self.hasRelay) { - [output appendFormat:@"%@%@: %@\n", indent, @"relay", self.relay]; - } - if (self.hasTimestamp) { - [output appendFormat:@"%@%@: %@\n", indent, @"timestamp", [NSNumber numberWithLongLong:self.timestamp]]; - } - if (self.hasLegacyMessage) { - [output appendFormat:@"%@%@: %@\n", indent, @"legacyMessage", self.legacyMessage]; - } - if (self.hasSourceDevice) { - [output appendFormat:@"%@%@: %@\n", indent, @"sourceDevice", [NSNumber numberWithInteger:self.sourceDevice]]; - } - if (self.hasContent) { - [output appendFormat:@"%@%@: %@\n", indent, @"content", self.content]; - } - [self.unknownFields writeDescriptionTo:output withIndent:indent]; -} -- (BOOL) isEqual:(id)other { - if (other == self) { - return YES; - } - if (![other isKindOfClass:[Envelope class]]) { - return NO; - } - Envelope *otherMessage = other; - return - self.hasType == otherMessage.hasType && - (!self.hasType || self.type == otherMessage.type) && - self.hasSource == otherMessage.hasSource && - (!self.hasSource || [self.source isEqual:otherMessage.source]) && - self.hasRelay == otherMessage.hasRelay && - (!self.hasRelay || [self.relay isEqual:otherMessage.relay]) && - self.hasTimestamp == otherMessage.hasTimestamp && - (!self.hasTimestamp || self.timestamp == otherMessage.timestamp) && - self.hasLegacyMessage == otherMessage.hasLegacyMessage && - (!self.hasLegacyMessage || [self.legacyMessage isEqual:otherMessage.legacyMessage]) && - self.hasSourceDevice == otherMessage.hasSourceDevice && - (!self.hasSourceDevice || self.sourceDevice == otherMessage.sourceDevice) && - self.hasContent == otherMessage.hasContent && - (!self.hasContent || [self.content isEqual:otherMessage.content]) && - (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); -} -- (NSUInteger) hash { - __block NSUInteger hashCode = 7; - if (self.hasType) { - hashCode = hashCode * 31 + self.type; - } - if (self.hasSource) { - hashCode = hashCode * 31 + [self.source hash]; - } - if (self.hasRelay) { - hashCode = hashCode * 31 + [self.relay hash]; - } - if (self.hasTimestamp) { - hashCode = hashCode * 31 + [[NSNumber numberWithLongLong:self.timestamp] hash]; - } - if (self.hasLegacyMessage) { - hashCode = hashCode * 31 + [self.legacyMessage hash]; - } - if (self.hasSourceDevice) { - hashCode = hashCode * 31 + [[NSNumber numberWithInteger:self.sourceDevice] hash]; - } - if (self.hasContent) { - hashCode = hashCode * 31 + [self.content hash]; - } - hashCode = hashCode * 31 + [self.unknownFields hash]; - return hashCode; -} -@end - -BOOL EnvelopeTypeIsValidValue(EnvelopeType value) { - switch (value) { - case EnvelopeTypeUnknown: - case EnvelopeTypeCiphertext: - case EnvelopeTypeKeyExchange: - case EnvelopeTypePrekeyBundle: - case EnvelopeTypeReceipt: - return YES; - default: - return NO; - } -} -@interface EnvelopeBuilder() -@property (strong) Envelope* result; -@end - -@implementation EnvelopeBuilder -@synthesize result; -- (id) init { - if ((self = [super init])) { - self.result = [[Envelope alloc] init]; - } - return self; -} -- (PBGeneratedMessage*) internalGetResult { - return result; -} -- (EnvelopeBuilder*) clear { - self.result = [[Envelope alloc] init]; - return self; -} -- (EnvelopeBuilder*) clone { - return [Envelope builderWithPrototype:result]; -} -- (Envelope*) defaultInstance { - return [Envelope defaultInstance]; -} -- (Envelope*) build { - [self checkInitialized]; - return [self buildPartial]; -} -- (Envelope*) buildPartial { - Envelope* returnMe = result; - self.result = nil; - return returnMe; -} -- (EnvelopeBuilder*) mergeFrom:(Envelope*) other { - if (other == [Envelope defaultInstance]) { - return self; - } - if (other.hasType) { - [self setType:other.type]; - } - if (other.hasSource) { - [self setSource:other.source]; - } - if (other.hasSourceDevice) { - [self setSourceDevice:other.sourceDevice]; - } - if (other.hasRelay) { - [self setRelay:other.relay]; - } - if (other.hasTimestamp) { - [self setTimestamp:other.timestamp]; - } - if (other.hasLegacyMessage) { - [self setLegacyMessage:other.legacyMessage]; - } - if (other.hasContent) { - [self setContent:other.content]; - } - [self mergeUnknownFields:other.unknownFields]; - return self; -} -- (EnvelopeBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { - return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; -} -- (EnvelopeBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; - while (YES) { - SInt32 tag = [input readTag]; - switch (tag) { - case 0: - [self setUnknownFields:[unknownFields build]]; - return self; - default: { - if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) { - [self setUnknownFields:[unknownFields build]]; - return self; - } - break; - } - case 8: { - EnvelopeType value = (EnvelopeType)[input readEnum]; - if (EnvelopeTypeIsValidValue(value)) { - [self setType:value]; - } else { - [unknownFields mergeVarintField:1 value:value]; - } - break; - } - case 18: { - [self setSource:[input readString]]; - break; - } - case 26: { - [self setRelay:[input readString]]; - break; - } - case 40: { - [self setTimestamp:[input readUInt64]]; - break; - } - case 50: { - [self setLegacyMessage:[input readData]]; - break; - } - case 56: { - [self setSourceDevice:[input readUInt32]]; - break; - } - case 66: { - [self setContent:[input readData]]; - break; - } - } - } -} -- (BOOL) hasType { - return result.hasType; -} -- (EnvelopeType) type { - return result.type; -} -- (EnvelopeBuilder*) setType:(EnvelopeType) value { - result.hasType = YES; - result.type = value; - return self; -} -- (EnvelopeBuilder*) clearType { - result.hasType = NO; - result.type = EnvelopeTypeUnknown; - return self; -} -- (BOOL) hasSource { - return result.hasSource; -} -- (NSString*) source { - return result.source; -} -- (EnvelopeBuilder*) setSource:(NSString*) value { - result.hasSource = YES; - result.source = value; - return self; -} -- (EnvelopeBuilder*) clearSource { - result.hasSource = NO; - result.source = @""; - return self; -} -- (BOOL) hasSourceDevice { - return result.hasSourceDevice; -} -- (UInt32) sourceDevice { - return result.sourceDevice; -} -- (EnvelopeBuilder*) setSourceDevice:(UInt32) value { - result.hasSourceDevice = YES; - result.sourceDevice = value; - return self; -} -- (EnvelopeBuilder*) clearSourceDevice { - result.hasSourceDevice = NO; - result.sourceDevice = 0; - return self; -} -- (BOOL) hasRelay { - return result.hasRelay; -} -- (NSString*) relay { - return result.relay; -} -- (EnvelopeBuilder*) setRelay:(NSString*) value { - result.hasRelay = YES; - result.relay = value; - return self; -} -- (EnvelopeBuilder*) clearRelay { - result.hasRelay = NO; - result.relay = @""; - return self; -} -- (BOOL) hasTimestamp { - return result.hasTimestamp; -} -- (UInt64) timestamp { - return result.timestamp; -} -- (EnvelopeBuilder*) setTimestamp:(UInt64) value { - result.hasTimestamp = YES; - result.timestamp = value; - return self; -} -- (EnvelopeBuilder*) clearTimestamp { - result.hasTimestamp = NO; - result.timestamp = 0L; - return self; -} -- (BOOL) hasLegacyMessage { - return result.hasLegacyMessage; -} -- (NSData*) legacyMessage { - return result.legacyMessage; -} -- (EnvelopeBuilder*) setLegacyMessage:(NSData*) value { - result.hasLegacyMessage = YES; - result.legacyMessage = value; - return self; -} -- (EnvelopeBuilder*) clearLegacyMessage { - result.hasLegacyMessage = NO; - result.legacyMessage = [NSData data]; - return self; -} -- (BOOL) hasContent { - return result.hasContent; -} -- (NSData*) content { - return result.content; -} -- (EnvelopeBuilder*) setContent:(NSData*) value { - result.hasContent = YES; - result.content = value; - return self; -} -- (EnvelopeBuilder*) clearContent { - result.hasContent = NO; - result.content = [NSData data]; - return self; -} -@end - -@interface Content () -@property (strong) DataMessage* dataMessage; -@property (strong) SyncMessage* syncMessage; -@end - -@implementation Content - -- (BOOL) hasDataMessage { - return !!hasDataMessage_; -} -- (void) setHasDataMessage:(BOOL) value_ { - hasDataMessage_ = !!value_; -} -@synthesize dataMessage; -- (BOOL) hasSyncMessage { - return !!hasSyncMessage_; -} -- (void) setHasSyncMessage:(BOOL) value_ { - hasSyncMessage_ = !!value_; -} -@synthesize syncMessage; -- (id) init { - if ((self = [super init])) { - self.dataMessage = [DataMessage defaultInstance]; - self.syncMessage = [SyncMessage defaultInstance]; - } - return self; -} -static Content* defaultContentInstance = nil; -+ (void) initialize { - if (self == [Content class]) { - defaultContentInstance = [[Content alloc] init]; - } -} -+ (Content*) defaultInstance { - return defaultContentInstance; -} -- (Content*) defaultInstance { - return defaultContentInstance; -} -- (BOOL) isInitialized { - return YES; -} -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { - if (self.hasDataMessage) { - [output writeMessage:1 value:self.dataMessage]; - } - if (self.hasSyncMessage) { - [output writeMessage:2 value:self.syncMessage]; - } - [self.unknownFields writeToCodedOutputStream:output]; -} -- (SInt32) serializedSize { - __block SInt32 size_ = memoizedSerializedSize; - if (size_ != -1) { - return size_; - } - - size_ = 0; - if (self.hasDataMessage) { - size_ += computeMessageSize(1, self.dataMessage); - } - if (self.hasSyncMessage) { - size_ += computeMessageSize(2, self.syncMessage); - } - size_ += self.unknownFields.serializedSize; - memoizedSerializedSize = size_; - return size_; -} -+ (Content*) parseFromData:(NSData*) data { - return (Content*)[[[Content builder] mergeFromData:data] build]; -} -+ (Content*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (Content*)[[[Content builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; -} -+ (Content*) parseFromInputStream:(NSInputStream*) input { - return (Content*)[[[Content builder] mergeFromInputStream:input] build]; -} -+ (Content*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (Content*)[[[Content builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (Content*) parseFromCodedInputStream:(PBCodedInputStream*) input { - return (Content*)[[[Content builder] mergeFromCodedInputStream:input] build]; -} -+ (Content*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (Content*)[[[Content builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (ContentBuilder*) builder { - return [[ContentBuilder alloc] init]; -} -+ (ContentBuilder*) builderWithPrototype:(Content*) prototype { - return [[Content builder] mergeFrom:prototype]; -} -- (ContentBuilder*) builder { - return [Content builder]; -} -- (ContentBuilder*) toBuilder { - return [Content builderWithPrototype:self]; -} -- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { - if (self.hasDataMessage) { - [output appendFormat:@"%@%@ {\n", indent, @"dataMessage"]; - [self.dataMessage writeDescriptionTo:output - withIndent:[NSString stringWithFormat:@"%@ ", indent]]; - [output appendFormat:@"%@}\n", indent]; - } - if (self.hasSyncMessage) { - [output appendFormat:@"%@%@ {\n", indent, @"syncMessage"]; - [self.syncMessage writeDescriptionTo:output - withIndent:[NSString stringWithFormat:@"%@ ", indent]]; - [output appendFormat:@"%@}\n", indent]; - } - [self.unknownFields writeDescriptionTo:output withIndent:indent]; -} -- (BOOL) isEqual:(id)other { - if (other == self) { - return YES; - } - if (![other isKindOfClass:[Content class]]) { - return NO; - } - Content *otherMessage = other; - return - self.hasDataMessage == otherMessage.hasDataMessage && - (!self.hasDataMessage || [self.dataMessage isEqual:otherMessage.dataMessage]) && - self.hasSyncMessage == otherMessage.hasSyncMessage && - (!self.hasSyncMessage || [self.syncMessage isEqual:otherMessage.syncMessage]) && - (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); -} -- (NSUInteger) hash { - __block NSUInteger hashCode = 7; - if (self.hasDataMessage) { - hashCode = hashCode * 31 + [self.dataMessage hash]; - } - if (self.hasSyncMessage) { - hashCode = hashCode * 31 + [self.syncMessage hash]; - } - hashCode = hashCode * 31 + [self.unknownFields hash]; - return hashCode; -} -@end - -@interface ContentBuilder() -@property (strong) Content* result; -@end - -@implementation ContentBuilder -@synthesize result; -- (id) init { - if ((self = [super init])) { - self.result = [[Content alloc] init]; - } - return self; -} -- (PBGeneratedMessage*) internalGetResult { - return result; -} -- (ContentBuilder*) clear { - self.result = [[Content alloc] init]; - return self; -} -- (ContentBuilder*) clone { - return [Content builderWithPrototype:result]; -} -- (Content*) defaultInstance { - return [Content defaultInstance]; -} -- (Content*) build { - [self checkInitialized]; - return [self buildPartial]; -} -- (Content*) buildPartial { - Content* returnMe = result; - self.result = nil; - return returnMe; -} -- (ContentBuilder*) mergeFrom:(Content*) other { - if (other == [Content defaultInstance]) { - return self; - } - if (other.hasDataMessage) { - [self mergeDataMessage:other.dataMessage]; - } - if (other.hasSyncMessage) { - [self mergeSyncMessage:other.syncMessage]; - } - [self mergeUnknownFields:other.unknownFields]; - return self; -} -- (ContentBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { - return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; -} -- (ContentBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; - while (YES) { - SInt32 tag = [input readTag]; - switch (tag) { - case 0: - [self setUnknownFields:[unknownFields build]]; - return self; - default: { - if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) { - [self setUnknownFields:[unknownFields build]]; - return self; - } - break; - } - case 10: { - DataMessageBuilder* subBuilder = [DataMessage builder]; - if (self.hasDataMessage) { - [subBuilder mergeFrom:self.dataMessage]; - } - [input readMessage:subBuilder extensionRegistry:extensionRegistry]; - [self setDataMessage:[subBuilder buildPartial]]; - break; - } - case 18: { - SyncMessageBuilder* subBuilder = [SyncMessage builder]; - if (self.hasSyncMessage) { - [subBuilder mergeFrom:self.syncMessage]; - } - [input readMessage:subBuilder extensionRegistry:extensionRegistry]; - [self setSyncMessage:[subBuilder buildPartial]]; - break; - } - } - } -} -- (BOOL) hasDataMessage { - return result.hasDataMessage; -} -- (DataMessage*) dataMessage { - return result.dataMessage; -} -- (ContentBuilder*) setDataMessage:(DataMessage*) value { - result.hasDataMessage = YES; - result.dataMessage = value; - return self; -} -- (ContentBuilder*) setDataMessageBuilder:(DataMessageBuilder*) builderForValue { - return [self setDataMessage:[builderForValue build]]; -} -- (ContentBuilder*) mergeDataMessage:(DataMessage*) value { - if (result.hasDataMessage && - result.dataMessage != [DataMessage defaultInstance]) { - result.dataMessage = - [[[DataMessage builderWithPrototype:result.dataMessage] mergeFrom:value] buildPartial]; - } else { - result.dataMessage = value; - } - result.hasDataMessage = YES; - return self; -} -- (ContentBuilder*) clearDataMessage { - result.hasDataMessage = NO; - result.dataMessage = [DataMessage defaultInstance]; - return self; -} -- (BOOL) hasSyncMessage { - return result.hasSyncMessage; -} -- (SyncMessage*) syncMessage { - return result.syncMessage; -} -- (ContentBuilder*) setSyncMessage:(SyncMessage*) value { - result.hasSyncMessage = YES; - result.syncMessage = value; - return self; -} -- (ContentBuilder*) setSyncMessageBuilder:(SyncMessageBuilder*) builderForValue { - return [self setSyncMessage:[builderForValue build]]; -} -- (ContentBuilder*) mergeSyncMessage:(SyncMessage*) value { - if (result.hasSyncMessage && - result.syncMessage != [SyncMessage defaultInstance]) { - result.syncMessage = - [[[SyncMessage builderWithPrototype:result.syncMessage] mergeFrom:value] buildPartial]; - } else { - result.syncMessage = value; - } - result.hasSyncMessage = YES; - return self; -} -- (ContentBuilder*) clearSyncMessage { - result.hasSyncMessage = NO; - result.syncMessage = [SyncMessage defaultInstance]; - return self; -} -@end - -@interface DataMessage () -@property (strong) NSString* body; -@property (strong) NSMutableArray * attachmentsArray; -@property (strong) GroupContext* group; -@property UInt32 flags; -@end - -@implementation DataMessage - -- (BOOL) hasBody { - return !!hasBody_; -} -- (void) setHasBody:(BOOL) value_ { - hasBody_ = !!value_; -} -@synthesize body; -@synthesize attachmentsArray; -@dynamic attachments; -- (BOOL) hasGroup { - return !!hasGroup_; -} -- (void) setHasGroup:(BOOL) value_ { - hasGroup_ = !!value_; -} -@synthesize group; -- (BOOL) hasFlags { - return !!hasFlags_; -} -- (void) setHasFlags:(BOOL) value_ { - hasFlags_ = !!value_; -} -@synthesize flags; -- (id) init { - if ((self = [super init])) { - self.body = @""; - self.group = [GroupContext defaultInstance]; - self.flags = 0; - } - return self; -} -static DataMessage* defaultDataMessageInstance = nil; -+ (void) initialize { - if (self == [DataMessage class]) { - defaultDataMessageInstance = [[DataMessage alloc] init]; - } -} -+ (DataMessage*) defaultInstance { - return defaultDataMessageInstance; -} -- (DataMessage*) defaultInstance { - return defaultDataMessageInstance; -} -- (NSArray *)attachments { - return attachmentsArray; -} -- (AttachmentPointer*)attachmentsAtIndex:(NSUInteger)index { - return [attachmentsArray objectAtIndex:index]; -} -- (BOOL) isInitialized { - return YES; -} -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { - if (self.hasBody) { - [output writeString:1 value:self.body]; - } - [self.attachmentsArray enumerateObjectsUsingBlock:^(AttachmentPointer *element, NSUInteger idx, BOOL *stop) { - [output writeMessage:2 value:element]; - }]; - if (self.hasGroup) { - [output writeMessage:3 value:self.group]; - } - if (self.hasFlags) { - [output writeUInt32:4 value:self.flags]; - } - [self.unknownFields writeToCodedOutputStream:output]; -} -- (SInt32) serializedSize { - __block SInt32 size_ = memoizedSerializedSize; - if (size_ != -1) { - return size_; - } - - size_ = 0; - if (self.hasBody) { - size_ += computeStringSize(1, self.body); - } - [self.attachmentsArray enumerateObjectsUsingBlock:^(AttachmentPointer *element, NSUInteger idx, BOOL *stop) { - size_ += computeMessageSize(2, element); - }]; - if (self.hasGroup) { - size_ += computeMessageSize(3, self.group); - } - if (self.hasFlags) { - size_ += computeUInt32Size(4, self.flags); - } - size_ += self.unknownFields.serializedSize; - memoizedSerializedSize = size_; - return size_; -} -+ (DataMessage*) parseFromData:(NSData*) data { - return (DataMessage*)[[[DataMessage builder] mergeFromData:data] build]; -} -+ (DataMessage*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (DataMessage*)[[[DataMessage builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; -} -+ (DataMessage*) parseFromInputStream:(NSInputStream*) input { - return (DataMessage*)[[[DataMessage builder] mergeFromInputStream:input] build]; -} -+ (DataMessage*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (DataMessage*)[[[DataMessage builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (DataMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input { - return (DataMessage*)[[[DataMessage builder] mergeFromCodedInputStream:input] build]; -} -+ (DataMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (DataMessage*)[[[DataMessage builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (DataMessageBuilder*) builder { - return [[DataMessageBuilder alloc] init]; -} -+ (DataMessageBuilder*) builderWithPrototype:(DataMessage*) prototype { - return [[DataMessage builder] mergeFrom:prototype]; -} -- (DataMessageBuilder*) builder { - return [DataMessage builder]; -} -- (DataMessageBuilder*) toBuilder { - return [DataMessage builderWithPrototype:self]; -} -- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { - if (self.hasBody) { - [output appendFormat:@"%@%@: %@\n", indent, @"body", self.body]; - } - [self.attachmentsArray enumerateObjectsUsingBlock:^(AttachmentPointer *element, NSUInteger idx, BOOL *stop) { - [output appendFormat:@"%@%@ {\n", indent, @"attachments"]; - [element writeDescriptionTo:output - withIndent:[NSString stringWithFormat:@"%@ ", indent]]; - [output appendFormat:@"%@}\n", indent]; - }]; - if (self.hasGroup) { - [output appendFormat:@"%@%@ {\n", indent, @"group"]; - [self.group writeDescriptionTo:output - withIndent:[NSString stringWithFormat:@"%@ ", indent]]; - [output appendFormat:@"%@}\n", indent]; - } - if (self.hasFlags) { - [output appendFormat:@"%@%@: %@\n", indent, @"flags", [NSNumber numberWithInteger:self.flags]]; - } - [self.unknownFields writeDescriptionTo:output withIndent:indent]; -} -- (BOOL) isEqual:(id)other { - if (other == self) { - return YES; - } - if (![other isKindOfClass:[DataMessage class]]) { - return NO; - } - DataMessage *otherMessage = other; - return - self.hasBody == otherMessage.hasBody && - (!self.hasBody || [self.body isEqual:otherMessage.body]) && - [self.attachmentsArray isEqualToArray:otherMessage.attachmentsArray] && - self.hasGroup == otherMessage.hasGroup && - (!self.hasGroup || [self.group isEqual:otherMessage.group]) && - self.hasFlags == otherMessage.hasFlags && - (!self.hasFlags || self.flags == otherMessage.flags) && - (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); -} -- (NSUInteger) hash { - __block NSUInteger hashCode = 7; - if (self.hasBody) { - hashCode = hashCode * 31 + [self.body hash]; - } - [self.attachmentsArray enumerateObjectsUsingBlock:^(AttachmentPointer *element, NSUInteger idx, BOOL *stop) { - hashCode = hashCode * 31 + [element hash]; - }]; - if (self.hasGroup) { - hashCode = hashCode * 31 + [self.group hash]; - } - if (self.hasFlags) { - hashCode = hashCode * 31 + [[NSNumber numberWithInteger:self.flags] hash]; - } - hashCode = hashCode * 31 + [self.unknownFields hash]; - return hashCode; -} -@end - -BOOL DataMessageFlagsIsValidValue(DataMessageFlags value) { - switch (value) { - case DataMessageFlagsEndSession: - return YES; - default: - return NO; - } -} -@interface DataMessageBuilder() -@property (strong) DataMessage* result; -@end - -@implementation DataMessageBuilder -@synthesize result; -- (id) init { - if ((self = [super init])) { - self.result = [[DataMessage alloc] init]; - } - return self; -} -- (PBGeneratedMessage*) internalGetResult { - return result; -} -- (DataMessageBuilder*) clear { - self.result = [[DataMessage alloc] init]; - return self; -} -- (DataMessageBuilder*) clone { - return [DataMessage builderWithPrototype:result]; -} -- (DataMessage*) defaultInstance { - return [DataMessage defaultInstance]; -} -- (DataMessage*) build { - [self checkInitialized]; - return [self buildPartial]; -} -- (DataMessage*) buildPartial { - DataMessage* returnMe = result; - self.result = nil; - return returnMe; -} -- (DataMessageBuilder*) mergeFrom:(DataMessage*) other { - if (other == [DataMessage defaultInstance]) { - return self; - } - if (other.hasBody) { - [self setBody:other.body]; - } - if (other.attachmentsArray.count > 0) { - if (result.attachmentsArray == nil) { - result.attachmentsArray = [[NSMutableArray alloc] initWithArray:other.attachmentsArray]; - } else { - [result.attachmentsArray addObjectsFromArray:other.attachmentsArray]; - } - } - if (other.hasGroup) { - [self mergeGroup:other.group]; - } - if (other.hasFlags) { - [self setFlags:other.flags]; - } - [self mergeUnknownFields:other.unknownFields]; - return self; -} -- (DataMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { - return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; -} -- (DataMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; - while (YES) { - SInt32 tag = [input readTag]; - switch (tag) { - case 0: - [self setUnknownFields:[unknownFields build]]; - return self; - default: { - if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) { - [self setUnknownFields:[unknownFields build]]; - return self; - } - break; - } - case 10: { - [self setBody:[input readString]]; - break; - } - case 18: { - AttachmentPointerBuilder* subBuilder = [AttachmentPointer builder]; - [input readMessage:subBuilder extensionRegistry:extensionRegistry]; - [self addAttachments:[subBuilder buildPartial]]; - break; - } - case 26: { - GroupContextBuilder* subBuilder = [GroupContext builder]; - if (self.hasGroup) { - [subBuilder mergeFrom:self.group]; - } - [input readMessage:subBuilder extensionRegistry:extensionRegistry]; - [self setGroup:[subBuilder buildPartial]]; - break; - } - case 32: { - [self setFlags:[input readUInt32]]; - break; - } - } - } -} -- (BOOL) hasBody { - return result.hasBody; -} -- (NSString*) body { - return result.body; -} -- (DataMessageBuilder*) setBody:(NSString*) value { - result.hasBody = YES; - result.body = value; - return self; -} -- (DataMessageBuilder*) clearBody { - result.hasBody = NO; - result.body = @""; - return self; -} -- (NSMutableArray *)attachments { - return result.attachmentsArray; -} -- (AttachmentPointer*)attachmentsAtIndex:(NSUInteger)index { - return [result attachmentsAtIndex:index]; -} -- (DataMessageBuilder *)addAttachments:(AttachmentPointer*)value { - if (result.attachmentsArray == nil) { - result.attachmentsArray = [[NSMutableArray alloc]init]; - } - [result.attachmentsArray addObject:value]; - return self; -} -- (DataMessageBuilder *)setAttachmentsArray:(NSArray *)array { - result.attachmentsArray = [[NSMutableArray alloc]initWithArray:array]; - return self; -} -- (DataMessageBuilder *)clearAttachments { - result.attachmentsArray = nil; - return self; -} -- (BOOL) hasGroup { - return result.hasGroup; -} -- (GroupContext*) group { - return result.group; -} -- (DataMessageBuilder*) setGroup:(GroupContext*) value { - result.hasGroup = YES; - result.group = value; - return self; -} -- (DataMessageBuilder*) setGroupBuilder:(GroupContextBuilder*) builderForValue { - return [self setGroup:[builderForValue build]]; -} -- (DataMessageBuilder*) mergeGroup:(GroupContext*) value { - if (result.hasGroup && - result.group != [GroupContext defaultInstance]) { - result.group = - [[[GroupContext builderWithPrototype:result.group] mergeFrom:value] buildPartial]; - } else { - result.group = value; - } - result.hasGroup = YES; - return self; -} -- (DataMessageBuilder*) clearGroup { - result.hasGroup = NO; - result.group = [GroupContext defaultInstance]; - return self; -} -- (BOOL) hasFlags { - return result.hasFlags; -} -- (UInt32) flags { - return result.flags; -} -- (DataMessageBuilder*) setFlags:(UInt32) value { - result.hasFlags = YES; - result.flags = value; - return self; -} -- (DataMessageBuilder*) clearFlags { - result.hasFlags = NO; - result.flags = 0; - return self; -} -@end - -@interface SyncMessage () -@property (strong) SyncMessageSent* sent; -@property (strong) SyncMessageContacts* contacts; -@property (strong) SyncMessageGroups* groups; -@property (strong) SyncMessageRequest* request; -@end - -@implementation SyncMessage - -- (BOOL) hasSent { - return !!hasSent_; -} -- (void) setHasSent:(BOOL) value_ { - hasSent_ = !!value_; -} -@synthesize sent; -- (BOOL) hasContacts { - return !!hasContacts_; -} -- (void) setHasContacts:(BOOL) value_ { - hasContacts_ = !!value_; -} -@synthesize contacts; -- (BOOL) hasGroups { - return !!hasGroups_; -} -- (void) setHasGroups:(BOOL) value_ { - hasGroups_ = !!value_; -} -@synthesize groups; -- (BOOL) hasRequest { - return !!hasRequest_; -} -- (void) setHasRequest:(BOOL) value_ { - hasRequest_ = !!value_; -} -@synthesize request; -- (id) init { - if ((self = [super init])) { - self.sent = [SyncMessageSent defaultInstance]; - self.contacts = [SyncMessageContacts defaultInstance]; - self.groups = [SyncMessageGroups defaultInstance]; - self.request = [SyncMessageRequest defaultInstance]; - } - return self; -} -static SyncMessage* defaultSyncMessageInstance = nil; -+ (void) initialize { - if (self == [SyncMessage class]) { - defaultSyncMessageInstance = [[SyncMessage alloc] init]; - } -} -+ (SyncMessage*) defaultInstance { - return defaultSyncMessageInstance; -} -- (SyncMessage*) defaultInstance { - return defaultSyncMessageInstance; -} -- (BOOL) isInitialized { - return YES; -} -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { - if (self.hasSent) { - [output writeMessage:1 value:self.sent]; - } - if (self.hasContacts) { - [output writeMessage:2 value:self.contacts]; - } - if (self.hasGroups) { - [output writeMessage:3 value:self.groups]; - } - if (self.hasRequest) { - [output writeMessage:4 value:self.request]; - } - [self.unknownFields writeToCodedOutputStream:output]; -} -- (SInt32) serializedSize { - __block SInt32 size_ = memoizedSerializedSize; - if (size_ != -1) { - return size_; - } - - size_ = 0; - if (self.hasSent) { - size_ += computeMessageSize(1, self.sent); - } - if (self.hasContacts) { - size_ += computeMessageSize(2, self.contacts); - } - if (self.hasGroups) { - size_ += computeMessageSize(3, self.groups); - } - if (self.hasRequest) { - size_ += computeMessageSize(4, self.request); - } - size_ += self.unknownFields.serializedSize; - memoizedSerializedSize = size_; - return size_; -} -+ (SyncMessage*) parseFromData:(NSData*) data { - return (SyncMessage*)[[[SyncMessage builder] mergeFromData:data] build]; -} -+ (SyncMessage*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (SyncMessage*)[[[SyncMessage builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; -} -+ (SyncMessage*) parseFromInputStream:(NSInputStream*) input { - return (SyncMessage*)[[[SyncMessage builder] mergeFromInputStream:input] build]; -} -+ (SyncMessage*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (SyncMessage*)[[[SyncMessage builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (SyncMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input { - return (SyncMessage*)[[[SyncMessage builder] mergeFromCodedInputStream:input] build]; -} -+ (SyncMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (SyncMessage*)[[[SyncMessage builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (SyncMessageBuilder*) builder { - return [[SyncMessageBuilder alloc] init]; -} -+ (SyncMessageBuilder*) builderWithPrototype:(SyncMessage*) prototype { - return [[SyncMessage builder] mergeFrom:prototype]; -} -- (SyncMessageBuilder*) builder { - return [SyncMessage builder]; -} -- (SyncMessageBuilder*) toBuilder { - return [SyncMessage builderWithPrototype:self]; -} -- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { - if (self.hasSent) { - [output appendFormat:@"%@%@ {\n", indent, @"sent"]; - [self.sent writeDescriptionTo:output - withIndent:[NSString stringWithFormat:@"%@ ", indent]]; - [output appendFormat:@"%@}\n", indent]; - } - if (self.hasContacts) { - [output appendFormat:@"%@%@ {\n", indent, @"contacts"]; - [self.contacts writeDescriptionTo:output - withIndent:[NSString stringWithFormat:@"%@ ", indent]]; - [output appendFormat:@"%@}\n", indent]; - } - if (self.hasGroups) { - [output appendFormat:@"%@%@ {\n", indent, @"groups"]; - [self.groups writeDescriptionTo:output - withIndent:[NSString stringWithFormat:@"%@ ", indent]]; - [output appendFormat:@"%@}\n", indent]; - } - if (self.hasRequest) { - [output appendFormat:@"%@%@ {\n", indent, @"request"]; - [self.request writeDescriptionTo:output - withIndent:[NSString stringWithFormat:@"%@ ", indent]]; - [output appendFormat:@"%@}\n", indent]; - } - [self.unknownFields writeDescriptionTo:output withIndent:indent]; -} -- (BOOL) isEqual:(id)other { - if (other == self) { - return YES; - } - if (![other isKindOfClass:[SyncMessage class]]) { - return NO; - } - SyncMessage *otherMessage = other; - return - self.hasSent == otherMessage.hasSent && - (!self.hasSent || [self.sent isEqual:otherMessage.sent]) && - self.hasContacts == otherMessage.hasContacts && - (!self.hasContacts || [self.contacts isEqual:otherMessage.contacts]) && - self.hasGroups == otherMessage.hasGroups && - (!self.hasGroups || [self.groups isEqual:otherMessage.groups]) && - self.hasRequest == otherMessage.hasRequest && - (!self.hasRequest || [self.request isEqual:otherMessage.request]) && - (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); -} -- (NSUInteger) hash { - __block NSUInteger hashCode = 7; - if (self.hasSent) { - hashCode = hashCode * 31 + [self.sent hash]; - } - if (self.hasContacts) { - hashCode = hashCode * 31 + [self.contacts hash]; - } - if (self.hasGroups) { - hashCode = hashCode * 31 + [self.groups hash]; - } - if (self.hasRequest) { - hashCode = hashCode * 31 + [self.request hash]; - } - hashCode = hashCode * 31 + [self.unknownFields hash]; - return hashCode; -} -@end - -@interface SyncMessageSent () -@property (strong) NSString* destination; -@property UInt64 timestamp; -@property (strong) DataMessage* message; -@end - -@implementation SyncMessageSent - -- (BOOL) hasDestination { - return !!hasDestination_; -} -- (void) setHasDestination:(BOOL) value_ { - hasDestination_ = !!value_; -} -@synthesize destination; -- (BOOL) hasTimestamp { - return !!hasTimestamp_; -} -- (void) setHasTimestamp:(BOOL) value_ { - hasTimestamp_ = !!value_; -} -@synthesize timestamp; -- (BOOL) hasMessage { - return !!hasMessage_; -} -- (void) setHasMessage:(BOOL) value_ { - hasMessage_ = !!value_; -} -@synthesize message; -- (id) init { - if ((self = [super init])) { - self.destination = @""; - self.timestamp = 0L; - self.message = [DataMessage defaultInstance]; - } - return self; -} -static SyncMessageSent* defaultSyncMessageSentInstance = nil; -+ (void) initialize { - if (self == [SyncMessageSent class]) { - defaultSyncMessageSentInstance = [[SyncMessageSent alloc] init]; - } -} -+ (SyncMessageSent*) defaultInstance { - return defaultSyncMessageSentInstance; -} -- (SyncMessageSent*) defaultInstance { - return defaultSyncMessageSentInstance; -} -- (BOOL) isInitialized { - return YES; -} -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { - if (self.hasDestination) { - [output writeString:1 value:self.destination]; - } - if (self.hasTimestamp) { - [output writeUInt64:2 value:self.timestamp]; - } - if (self.hasMessage) { - [output writeMessage:3 value:self.message]; - } - [self.unknownFields writeToCodedOutputStream:output]; -} -- (SInt32) serializedSize { - __block SInt32 size_ = memoizedSerializedSize; - if (size_ != -1) { - return size_; - } - - size_ = 0; - if (self.hasDestination) { - size_ += computeStringSize(1, self.destination); - } - if (self.hasTimestamp) { - size_ += computeUInt64Size(2, self.timestamp); - } - if (self.hasMessage) { - size_ += computeMessageSize(3, self.message); - } - size_ += self.unknownFields.serializedSize; - memoizedSerializedSize = size_; - return size_; -} -+ (SyncMessageSent*) parseFromData:(NSData*) data { - return (SyncMessageSent*)[[[SyncMessageSent builder] mergeFromData:data] build]; -} -+ (SyncMessageSent*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (SyncMessageSent*)[[[SyncMessageSent builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; -} -+ (SyncMessageSent*) parseFromInputStream:(NSInputStream*) input { - return (SyncMessageSent*)[[[SyncMessageSent builder] mergeFromInputStream:input] build]; -} -+ (SyncMessageSent*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (SyncMessageSent*)[[[SyncMessageSent builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (SyncMessageSent*) parseFromCodedInputStream:(PBCodedInputStream*) input { - return (SyncMessageSent*)[[[SyncMessageSent builder] mergeFromCodedInputStream:input] build]; -} -+ (SyncMessageSent*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (SyncMessageSent*)[[[SyncMessageSent builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (SyncMessageSentBuilder*) builder { - return [[SyncMessageSentBuilder alloc] init]; -} -+ (SyncMessageSentBuilder*) builderWithPrototype:(SyncMessageSent*) prototype { - return [[SyncMessageSent builder] mergeFrom:prototype]; -} -- (SyncMessageSentBuilder*) builder { - return [SyncMessageSent builder]; -} -- (SyncMessageSentBuilder*) toBuilder { - return [SyncMessageSent builderWithPrototype:self]; -} -- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { - if (self.hasDestination) { - [output appendFormat:@"%@%@: %@\n", indent, @"destination", self.destination]; - } - if (self.hasTimestamp) { - [output appendFormat:@"%@%@: %@\n", indent, @"timestamp", [NSNumber numberWithLongLong:self.timestamp]]; - } - if (self.hasMessage) { - [output appendFormat:@"%@%@ {\n", indent, @"message"]; - [self.message writeDescriptionTo:output - withIndent:[NSString stringWithFormat:@"%@ ", indent]]; - [output appendFormat:@"%@}\n", indent]; - } - [self.unknownFields writeDescriptionTo:output withIndent:indent]; -} -- (BOOL) isEqual:(id)other { - if (other == self) { - return YES; - } - if (![other isKindOfClass:[SyncMessageSent class]]) { - return NO; - } - SyncMessageSent *otherMessage = other; - return - self.hasDestination == otherMessage.hasDestination && - (!self.hasDestination || [self.destination isEqual:otherMessage.destination]) && - self.hasTimestamp == otherMessage.hasTimestamp && - (!self.hasTimestamp || self.timestamp == otherMessage.timestamp) && - self.hasMessage == otherMessage.hasMessage && - (!self.hasMessage || [self.message isEqual:otherMessage.message]) && - (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); -} -- (NSUInteger) hash { - __block NSUInteger hashCode = 7; - if (self.hasDestination) { - hashCode = hashCode * 31 + [self.destination hash]; - } - if (self.hasTimestamp) { - hashCode = hashCode * 31 + [[NSNumber numberWithLongLong:self.timestamp] hash]; - } - if (self.hasMessage) { - hashCode = hashCode * 31 + [self.message hash]; - } - hashCode = hashCode * 31 + [self.unknownFields hash]; - return hashCode; -} -@end - -@interface SyncMessageSentBuilder() -@property (strong) SyncMessageSent* result; -@end - -@implementation SyncMessageSentBuilder -@synthesize result; -- (id) init { - if ((self = [super init])) { - self.result = [[SyncMessageSent alloc] init]; - } - return self; -} -- (PBGeneratedMessage*) internalGetResult { - return result; -} -- (SyncMessageSentBuilder*) clear { - self.result = [[SyncMessageSent alloc] init]; - return self; -} -- (SyncMessageSentBuilder*) clone { - return [SyncMessageSent builderWithPrototype:result]; -} -- (SyncMessageSent*) defaultInstance { - return [SyncMessageSent defaultInstance]; -} -- (SyncMessageSent*) build { - [self checkInitialized]; - return [self buildPartial]; -} -- (SyncMessageSent*) buildPartial { - SyncMessageSent* returnMe = result; - self.result = nil; - return returnMe; -} -- (SyncMessageSentBuilder*) mergeFrom:(SyncMessageSent*) other { - if (other == [SyncMessageSent defaultInstance]) { - return self; - } - if (other.hasDestination) { - [self setDestination:other.destination]; - } - if (other.hasTimestamp) { - [self setTimestamp:other.timestamp]; - } - if (other.hasMessage) { - [self mergeMessage:other.message]; - } - [self mergeUnknownFields:other.unknownFields]; - return self; -} -- (SyncMessageSentBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { - return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; -} -- (SyncMessageSentBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; - while (YES) { - SInt32 tag = [input readTag]; - switch (tag) { - case 0: - [self setUnknownFields:[unknownFields build]]; - return self; - default: { - if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) { - [self setUnknownFields:[unknownFields build]]; - return self; - } - break; - } - case 10: { - [self setDestination:[input readString]]; - break; - } - case 16: { - [self setTimestamp:[input readUInt64]]; - break; - } - case 26: { - DataMessageBuilder* subBuilder = [DataMessage builder]; - if (self.hasMessage) { - [subBuilder mergeFrom:self.message]; - } - [input readMessage:subBuilder extensionRegistry:extensionRegistry]; - [self setMessage:[subBuilder buildPartial]]; - break; - } - } - } -} -- (BOOL) hasDestination { - return result.hasDestination; -} -- (NSString*) destination { - return result.destination; -} -- (SyncMessageSentBuilder*) setDestination:(NSString*) value { - result.hasDestination = YES; - result.destination = value; - return self; -} -- (SyncMessageSentBuilder*) clearDestination { - result.hasDestination = NO; - result.destination = @""; - return self; -} -- (BOOL) hasTimestamp { - return result.hasTimestamp; -} -- (UInt64) timestamp { - return result.timestamp; -} -- (SyncMessageSentBuilder*) setTimestamp:(UInt64) value { - result.hasTimestamp = YES; - result.timestamp = value; - return self; -} -- (SyncMessageSentBuilder*) clearTimestamp { - result.hasTimestamp = NO; - result.timestamp = 0L; - return self; -} -- (BOOL) hasMessage { - return result.hasMessage; -} -- (DataMessage*) message { - return result.message; -} -- (SyncMessageSentBuilder*) setMessage:(DataMessage*) value { - result.hasMessage = YES; - result.message = value; - return self; -} -- (SyncMessageSentBuilder*) setMessageBuilder:(DataMessageBuilder*) builderForValue { - return [self setMessage:[builderForValue build]]; -} -- (SyncMessageSentBuilder*) mergeMessage:(DataMessage*) value { - if (result.hasMessage && - result.message != [DataMessage defaultInstance]) { - result.message = - [[[DataMessage builderWithPrototype:result.message] mergeFrom:value] buildPartial]; - } else { - result.message = value; - } - result.hasMessage = YES; - return self; -} -- (SyncMessageSentBuilder*) clearMessage { - result.hasMessage = NO; - result.message = [DataMessage defaultInstance]; - return self; -} -@end - -@interface SyncMessageContacts () -@property (strong) AttachmentPointer* blob; -@end - -@implementation SyncMessageContacts - -- (BOOL) hasBlob { - return !!hasBlob_; -} -- (void) setHasBlob:(BOOL) value_ { - hasBlob_ = !!value_; -} -@synthesize blob; -- (id) init { - if ((self = [super init])) { - self.blob = [AttachmentPointer defaultInstance]; - } - return self; -} -static SyncMessageContacts* defaultSyncMessageContactsInstance = nil; -+ (void) initialize { - if (self == [SyncMessageContacts class]) { - defaultSyncMessageContactsInstance = [[SyncMessageContacts alloc] init]; - } -} -+ (SyncMessageContacts*) defaultInstance { - return defaultSyncMessageContactsInstance; -} -- (SyncMessageContacts*) defaultInstance { - return defaultSyncMessageContactsInstance; -} -- (BOOL) isInitialized { - return YES; -} -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { - if (self.hasBlob) { - [output writeMessage:1 value:self.blob]; - } - [self.unknownFields writeToCodedOutputStream:output]; -} -- (SInt32) serializedSize { - __block SInt32 size_ = memoizedSerializedSize; - if (size_ != -1) { - return size_; - } - - size_ = 0; - if (self.hasBlob) { - size_ += computeMessageSize(1, self.blob); - } - size_ += self.unknownFields.serializedSize; - memoizedSerializedSize = size_; - return size_; -} -+ (SyncMessageContacts*) parseFromData:(NSData*) data { - return (SyncMessageContacts*)[[[SyncMessageContacts builder] mergeFromData:data] build]; -} -+ (SyncMessageContacts*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (SyncMessageContacts*)[[[SyncMessageContacts builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; -} -+ (SyncMessageContacts*) parseFromInputStream:(NSInputStream*) input { - return (SyncMessageContacts*)[[[SyncMessageContacts builder] mergeFromInputStream:input] build]; -} -+ (SyncMessageContacts*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (SyncMessageContacts*)[[[SyncMessageContacts builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (SyncMessageContacts*) parseFromCodedInputStream:(PBCodedInputStream*) input { - return (SyncMessageContacts*)[[[SyncMessageContacts builder] mergeFromCodedInputStream:input] build]; -} -+ (SyncMessageContacts*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (SyncMessageContacts*)[[[SyncMessageContacts builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (SyncMessageContactsBuilder*) builder { - return [[SyncMessageContactsBuilder alloc] init]; -} -+ (SyncMessageContactsBuilder*) builderWithPrototype:(SyncMessageContacts*) prototype { - return [[SyncMessageContacts builder] mergeFrom:prototype]; -} -- (SyncMessageContactsBuilder*) builder { - return [SyncMessageContacts builder]; -} -- (SyncMessageContactsBuilder*) toBuilder { - return [SyncMessageContacts builderWithPrototype:self]; -} -- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { - if (self.hasBlob) { - [output appendFormat:@"%@%@ {\n", indent, @"blob"]; - [self.blob writeDescriptionTo:output - withIndent:[NSString stringWithFormat:@"%@ ", indent]]; - [output appendFormat:@"%@}\n", indent]; - } - [self.unknownFields writeDescriptionTo:output withIndent:indent]; -} -- (BOOL) isEqual:(id)other { - if (other == self) { - return YES; - } - if (![other isKindOfClass:[SyncMessageContacts class]]) { - return NO; - } - SyncMessageContacts *otherMessage = other; - return - self.hasBlob == otherMessage.hasBlob && - (!self.hasBlob || [self.blob isEqual:otherMessage.blob]) && - (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); -} -- (NSUInteger) hash { - __block NSUInteger hashCode = 7; - if (self.hasBlob) { - hashCode = hashCode * 31 + [self.blob hash]; - } - hashCode = hashCode * 31 + [self.unknownFields hash]; - return hashCode; -} -@end - -@interface SyncMessageContactsBuilder() -@property (strong) SyncMessageContacts* result; -@end - -@implementation SyncMessageContactsBuilder -@synthesize result; -- (id) init { - if ((self = [super init])) { - self.result = [[SyncMessageContacts alloc] init]; - } - return self; -} -- (PBGeneratedMessage*) internalGetResult { - return result; -} -- (SyncMessageContactsBuilder*) clear { - self.result = [[SyncMessageContacts alloc] init]; - return self; -} -- (SyncMessageContactsBuilder*) clone { - return [SyncMessageContacts builderWithPrototype:result]; -} -- (SyncMessageContacts*) defaultInstance { - return [SyncMessageContacts defaultInstance]; -} -- (SyncMessageContacts*) build { - [self checkInitialized]; - return [self buildPartial]; -} -- (SyncMessageContacts*) buildPartial { - SyncMessageContacts* returnMe = result; - self.result = nil; - return returnMe; -} -- (SyncMessageContactsBuilder*) mergeFrom:(SyncMessageContacts*) other { - if (other == [SyncMessageContacts defaultInstance]) { - return self; - } - if (other.hasBlob) { - [self mergeBlob:other.blob]; - } - [self mergeUnknownFields:other.unknownFields]; - return self; -} -- (SyncMessageContactsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { - return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; -} -- (SyncMessageContactsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; - while (YES) { - SInt32 tag = [input readTag]; - switch (tag) { - case 0: - [self setUnknownFields:[unknownFields build]]; - return self; - default: { - if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) { - [self setUnknownFields:[unknownFields build]]; - return self; - } - break; - } - case 10: { - AttachmentPointerBuilder* subBuilder = [AttachmentPointer builder]; - if (self.hasBlob) { - [subBuilder mergeFrom:self.blob]; - } - [input readMessage:subBuilder extensionRegistry:extensionRegistry]; - [self setBlob:[subBuilder buildPartial]]; - break; - } - } - } -} -- (BOOL) hasBlob { - return result.hasBlob; -} -- (AttachmentPointer*) blob { - return result.blob; -} -- (SyncMessageContactsBuilder*) setBlob:(AttachmentPointer*) value { - result.hasBlob = YES; - result.blob = value; - return self; -} -- (SyncMessageContactsBuilder*) setBlobBuilder:(AttachmentPointerBuilder*) builderForValue { - return [self setBlob:[builderForValue build]]; -} -- (SyncMessageContactsBuilder*) mergeBlob:(AttachmentPointer*) value { - if (result.hasBlob && - result.blob != [AttachmentPointer defaultInstance]) { - result.blob = - [[[AttachmentPointer builderWithPrototype:result.blob] mergeFrom:value] buildPartial]; - } else { - result.blob = value; - } - result.hasBlob = YES; - return self; -} -- (SyncMessageContactsBuilder*) clearBlob { - result.hasBlob = NO; - result.blob = [AttachmentPointer defaultInstance]; - return self; -} -@end - -@interface SyncMessageGroups () -@property (strong) AttachmentPointer* blob; -@end - -@implementation SyncMessageGroups - -- (BOOL) hasBlob { - return !!hasBlob_; -} -- (void) setHasBlob:(BOOL) value_ { - hasBlob_ = !!value_; -} -@synthesize blob; -- (id) init { - if ((self = [super init])) { - self.blob = [AttachmentPointer defaultInstance]; - } - return self; -} -static SyncMessageGroups* defaultSyncMessageGroupsInstance = nil; -+ (void) initialize { - if (self == [SyncMessageGroups class]) { - defaultSyncMessageGroupsInstance = [[SyncMessageGroups alloc] init]; - } -} -+ (SyncMessageGroups*) defaultInstance { - return defaultSyncMessageGroupsInstance; -} -- (SyncMessageGroups*) defaultInstance { - return defaultSyncMessageGroupsInstance; -} -- (BOOL) isInitialized { - return YES; -} -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { - if (self.hasBlob) { - [output writeMessage:1 value:self.blob]; - } - [self.unknownFields writeToCodedOutputStream:output]; -} -- (SInt32) serializedSize { - __block SInt32 size_ = memoizedSerializedSize; - if (size_ != -1) { - return size_; - } - - size_ = 0; - if (self.hasBlob) { - size_ += computeMessageSize(1, self.blob); - } - size_ += self.unknownFields.serializedSize; - memoizedSerializedSize = size_; - return size_; -} -+ (SyncMessageGroups*) parseFromData:(NSData*) data { - return (SyncMessageGroups*)[[[SyncMessageGroups builder] mergeFromData:data] build]; -} -+ (SyncMessageGroups*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (SyncMessageGroups*)[[[SyncMessageGroups builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; -} -+ (SyncMessageGroups*) parseFromInputStream:(NSInputStream*) input { - return (SyncMessageGroups*)[[[SyncMessageGroups builder] mergeFromInputStream:input] build]; -} -+ (SyncMessageGroups*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (SyncMessageGroups*)[[[SyncMessageGroups builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (SyncMessageGroups*) parseFromCodedInputStream:(PBCodedInputStream*) input { - return (SyncMessageGroups*)[[[SyncMessageGroups builder] mergeFromCodedInputStream:input] build]; -} -+ (SyncMessageGroups*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (SyncMessageGroups*)[[[SyncMessageGroups builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (SyncMessageGroupsBuilder*) builder { - return [[SyncMessageGroupsBuilder alloc] init]; -} -+ (SyncMessageGroupsBuilder*) builderWithPrototype:(SyncMessageGroups*) prototype { - return [[SyncMessageGroups builder] mergeFrom:prototype]; -} -- (SyncMessageGroupsBuilder*) builder { - return [SyncMessageGroups builder]; -} -- (SyncMessageGroupsBuilder*) toBuilder { - return [SyncMessageGroups builderWithPrototype:self]; -} -- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { - if (self.hasBlob) { - [output appendFormat:@"%@%@ {\n", indent, @"blob"]; - [self.blob writeDescriptionTo:output - withIndent:[NSString stringWithFormat:@"%@ ", indent]]; - [output appendFormat:@"%@}\n", indent]; - } - [self.unknownFields writeDescriptionTo:output withIndent:indent]; -} -- (BOOL) isEqual:(id)other { - if (other == self) { - return YES; - } - if (![other isKindOfClass:[SyncMessageGroups class]]) { - return NO; - } - SyncMessageGroups *otherMessage = other; - return - self.hasBlob == otherMessage.hasBlob && - (!self.hasBlob || [self.blob isEqual:otherMessage.blob]) && - (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); -} -- (NSUInteger) hash { - __block NSUInteger hashCode = 7; - if (self.hasBlob) { - hashCode = hashCode * 31 + [self.blob hash]; - } - hashCode = hashCode * 31 + [self.unknownFields hash]; - return hashCode; -} -@end - -@interface SyncMessageGroupsBuilder() -@property (strong) SyncMessageGroups* result; -@end - -@implementation SyncMessageGroupsBuilder -@synthesize result; -- (id) init { - if ((self = [super init])) { - self.result = [[SyncMessageGroups alloc] init]; - } - return self; -} -- (PBGeneratedMessage*) internalGetResult { - return result; -} -- (SyncMessageGroupsBuilder*) clear { - self.result = [[SyncMessageGroups alloc] init]; - return self; -} -- (SyncMessageGroupsBuilder*) clone { - return [SyncMessageGroups builderWithPrototype:result]; -} -- (SyncMessageGroups*) defaultInstance { - return [SyncMessageGroups defaultInstance]; -} -- (SyncMessageGroups*) build { - [self checkInitialized]; - return [self buildPartial]; -} -- (SyncMessageGroups*) buildPartial { - SyncMessageGroups* returnMe = result; - self.result = nil; - return returnMe; -} -- (SyncMessageGroupsBuilder*) mergeFrom:(SyncMessageGroups*) other { - if (other == [SyncMessageGroups defaultInstance]) { - return self; - } - if (other.hasBlob) { - [self mergeBlob:other.blob]; - } - [self mergeUnknownFields:other.unknownFields]; - return self; -} -- (SyncMessageGroupsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { - return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; -} -- (SyncMessageGroupsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; - while (YES) { - SInt32 tag = [input readTag]; - switch (tag) { - case 0: - [self setUnknownFields:[unknownFields build]]; - return self; - default: { - if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) { - [self setUnknownFields:[unknownFields build]]; - return self; - } - break; - } - case 10: { - AttachmentPointerBuilder* subBuilder = [AttachmentPointer builder]; - if (self.hasBlob) { - [subBuilder mergeFrom:self.blob]; - } - [input readMessage:subBuilder extensionRegistry:extensionRegistry]; - [self setBlob:[subBuilder buildPartial]]; - break; - } - } - } -} -- (BOOL) hasBlob { - return result.hasBlob; -} -- (AttachmentPointer*) blob { - return result.blob; -} -- (SyncMessageGroupsBuilder*) setBlob:(AttachmentPointer*) value { - result.hasBlob = YES; - result.blob = value; - return self; -} -- (SyncMessageGroupsBuilder*) setBlobBuilder:(AttachmentPointerBuilder*) builderForValue { - return [self setBlob:[builderForValue build]]; -} -- (SyncMessageGroupsBuilder*) mergeBlob:(AttachmentPointer*) value { - if (result.hasBlob && - result.blob != [AttachmentPointer defaultInstance]) { - result.blob = - [[[AttachmentPointer builderWithPrototype:result.blob] mergeFrom:value] buildPartial]; - } else { - result.blob = value; - } - result.hasBlob = YES; - return self; -} -- (SyncMessageGroupsBuilder*) clearBlob { - result.hasBlob = NO; - result.blob = [AttachmentPointer defaultInstance]; - return self; -} -@end - -@interface SyncMessageRequest () -@property SyncMessageRequestType type; -@end - -@implementation SyncMessageRequest - -- (BOOL) hasType { - return !!hasType_; -} -- (void) setHasType:(BOOL) value_ { - hasType_ = !!value_; -} -@synthesize type; -- (id) init { - if ((self = [super init])) { - self.type = SyncMessageRequestTypeUnknown; - } - return self; -} -static SyncMessageRequest* defaultSyncMessageRequestInstance = nil; -+ (void) initialize { - if (self == [SyncMessageRequest class]) { - defaultSyncMessageRequestInstance = [[SyncMessageRequest alloc] init]; - } -} -+ (SyncMessageRequest*) defaultInstance { - return defaultSyncMessageRequestInstance; -} -- (SyncMessageRequest*) defaultInstance { - return defaultSyncMessageRequestInstance; -} -- (BOOL) isInitialized { - return YES; -} -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { - if (self.hasType) { - [output writeEnum:1 value:self.type]; - } - [self.unknownFields writeToCodedOutputStream:output]; -} -- (SInt32) serializedSize { - __block SInt32 size_ = memoizedSerializedSize; - if (size_ != -1) { - return size_; - } - - size_ = 0; - if (self.hasType) { - size_ += computeEnumSize(1, self.type); - } - size_ += self.unknownFields.serializedSize; - memoizedSerializedSize = size_; - return size_; -} -+ (SyncMessageRequest*) parseFromData:(NSData*) data { - return (SyncMessageRequest*)[[[SyncMessageRequest builder] mergeFromData:data] build]; -} -+ (SyncMessageRequest*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (SyncMessageRequest*)[[[SyncMessageRequest builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; -} -+ (SyncMessageRequest*) parseFromInputStream:(NSInputStream*) input { - return (SyncMessageRequest*)[[[SyncMessageRequest builder] mergeFromInputStream:input] build]; -} -+ (SyncMessageRequest*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (SyncMessageRequest*)[[[SyncMessageRequest builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (SyncMessageRequest*) parseFromCodedInputStream:(PBCodedInputStream*) input { - return (SyncMessageRequest*)[[[SyncMessageRequest builder] mergeFromCodedInputStream:input] build]; -} -+ (SyncMessageRequest*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (SyncMessageRequest*)[[[SyncMessageRequest builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (SyncMessageRequestBuilder*) builder { - return [[SyncMessageRequestBuilder alloc] init]; -} -+ (SyncMessageRequestBuilder*) builderWithPrototype:(SyncMessageRequest*) prototype { - return [[SyncMessageRequest builder] mergeFrom:prototype]; -} -- (SyncMessageRequestBuilder*) builder { - return [SyncMessageRequest builder]; -} -- (SyncMessageRequestBuilder*) toBuilder { - return [SyncMessageRequest builderWithPrototype:self]; -} -- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { - if (self.hasType) { - [output appendFormat:@"%@%@: %d\n", indent, @"type", self.type]; - } - [self.unknownFields writeDescriptionTo:output withIndent:indent]; -} -- (BOOL) isEqual:(id)other { - if (other == self) { - return YES; - } - if (![other isKindOfClass:[SyncMessageRequest class]]) { - return NO; - } - SyncMessageRequest *otherMessage = other; - return - self.hasType == otherMessage.hasType && - (!self.hasType || self.type == otherMessage.type) && - (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); -} -- (NSUInteger) hash { - __block NSUInteger hashCode = 7; - if (self.hasType) { - hashCode = hashCode * 31 + self.type; - } - hashCode = hashCode * 31 + [self.unknownFields hash]; - return hashCode; -} -@end - -BOOL SyncMessageRequestTypeIsValidValue(SyncMessageRequestType value) { - switch (value) { - case SyncMessageRequestTypeUnknown: - case SyncMessageRequestTypeContacts: - case SyncMessageRequestTypeGroups: - return YES; - default: - return NO; - } -} -@interface SyncMessageRequestBuilder() -@property (strong) SyncMessageRequest* result; -@end - -@implementation SyncMessageRequestBuilder -@synthesize result; -- (id) init { - if ((self = [super init])) { - self.result = [[SyncMessageRequest alloc] init]; - } - return self; -} -- (PBGeneratedMessage*) internalGetResult { - return result; -} -- (SyncMessageRequestBuilder*) clear { - self.result = [[SyncMessageRequest alloc] init]; - return self; -} -- (SyncMessageRequestBuilder*) clone { - return [SyncMessageRequest builderWithPrototype:result]; -} -- (SyncMessageRequest*) defaultInstance { - return [SyncMessageRequest defaultInstance]; -} -- (SyncMessageRequest*) build { - [self checkInitialized]; - return [self buildPartial]; -} -- (SyncMessageRequest*) buildPartial { - SyncMessageRequest* returnMe = result; - self.result = nil; - return returnMe; -} -- (SyncMessageRequestBuilder*) mergeFrom:(SyncMessageRequest*) other { - if (other == [SyncMessageRequest defaultInstance]) { - return self; - } - if (other.hasType) { - [self setType:other.type]; - } - [self mergeUnknownFields:other.unknownFields]; - return self; -} -- (SyncMessageRequestBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { - return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; -} -- (SyncMessageRequestBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; - while (YES) { - SInt32 tag = [input readTag]; - switch (tag) { - case 0: - [self setUnknownFields:[unknownFields build]]; - return self; - default: { - if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) { - [self setUnknownFields:[unknownFields build]]; - return self; - } - break; - } - case 8: { - SyncMessageRequestType value = (SyncMessageRequestType)[input readEnum]; - if (SyncMessageRequestTypeIsValidValue(value)) { - [self setType:value]; - } else { - [unknownFields mergeVarintField:1 value:value]; - } - break; - } - } - } -} -- (BOOL) hasType { - return result.hasType; -} -- (SyncMessageRequestType) type { - return result.type; -} -- (SyncMessageRequestBuilder*) setType:(SyncMessageRequestType) value { - result.hasType = YES; - result.type = value; - return self; -} -- (SyncMessageRequestBuilder*) clearType { - result.hasType = NO; - result.type = SyncMessageRequestTypeUnknown; - return self; -} -@end - -@interface SyncMessageBuilder() -@property (strong) SyncMessage* result; -@end - -@implementation SyncMessageBuilder -@synthesize result; -- (id) init { - if ((self = [super init])) { - self.result = [[SyncMessage alloc] init]; - } - return self; -} -- (PBGeneratedMessage*) internalGetResult { - return result; -} -- (SyncMessageBuilder*) clear { - self.result = [[SyncMessage alloc] init]; - return self; -} -- (SyncMessageBuilder*) clone { - return [SyncMessage builderWithPrototype:result]; -} -- (SyncMessage*) defaultInstance { - return [SyncMessage defaultInstance]; -} -- (SyncMessage*) build { - [self checkInitialized]; - return [self buildPartial]; -} -- (SyncMessage*) buildPartial { - SyncMessage* returnMe = result; - self.result = nil; - return returnMe; -} -- (SyncMessageBuilder*) mergeFrom:(SyncMessage*) other { - if (other == [SyncMessage defaultInstance]) { - return self; - } - if (other.hasSent) { - [self mergeSent:other.sent]; - } - if (other.hasContacts) { - [self mergeContacts:other.contacts]; - } - if (other.hasGroups) { - [self mergeGroups:other.groups]; - } - if (other.hasRequest) { - [self mergeRequest:other.request]; - } - [self mergeUnknownFields:other.unknownFields]; - return self; -} -- (SyncMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { - return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; -} -- (SyncMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; - while (YES) { - SInt32 tag = [input readTag]; - switch (tag) { - case 0: - [self setUnknownFields:[unknownFields build]]; - return self; - default: { - if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) { - [self setUnknownFields:[unknownFields build]]; - return self; - } - break; - } - case 10: { - SyncMessageSentBuilder* subBuilder = [SyncMessageSent builder]; - if (self.hasSent) { - [subBuilder mergeFrom:self.sent]; - } - [input readMessage:subBuilder extensionRegistry:extensionRegistry]; - [self setSent:[subBuilder buildPartial]]; - break; - } - case 18: { - SyncMessageContactsBuilder* subBuilder = [SyncMessageContacts builder]; - if (self.hasContacts) { - [subBuilder mergeFrom:self.contacts]; - } - [input readMessage:subBuilder extensionRegistry:extensionRegistry]; - [self setContacts:[subBuilder buildPartial]]; - break; - } - case 26: { - SyncMessageGroupsBuilder* subBuilder = [SyncMessageGroups builder]; - if (self.hasGroups) { - [subBuilder mergeFrom:self.groups]; - } - [input readMessage:subBuilder extensionRegistry:extensionRegistry]; - [self setGroups:[subBuilder buildPartial]]; - break; - } - case 34: { - SyncMessageRequestBuilder* subBuilder = [SyncMessageRequest builder]; - if (self.hasRequest) { - [subBuilder mergeFrom:self.request]; - } - [input readMessage:subBuilder extensionRegistry:extensionRegistry]; - [self setRequest:[subBuilder buildPartial]]; - break; - } - } - } -} -- (BOOL) hasSent { - return result.hasSent; -} -- (SyncMessageSent*) sent { - return result.sent; -} -- (SyncMessageBuilder*) setSent:(SyncMessageSent*) value { - result.hasSent = YES; - result.sent = value; - return self; -} -- (SyncMessageBuilder*) setSentBuilder:(SyncMessageSentBuilder*) builderForValue { - return [self setSent:[builderForValue build]]; -} -- (SyncMessageBuilder*) mergeSent:(SyncMessageSent*) value { - if (result.hasSent && - result.sent != [SyncMessageSent defaultInstance]) { - result.sent = - [[[SyncMessageSent builderWithPrototype:result.sent] mergeFrom:value] buildPartial]; - } else { - result.sent = value; - } - result.hasSent = YES; - return self; -} -- (SyncMessageBuilder*) clearSent { - result.hasSent = NO; - result.sent = [SyncMessageSent defaultInstance]; - return self; -} -- (BOOL) hasContacts { - return result.hasContacts; -} -- (SyncMessageContacts*) contacts { - return result.contacts; -} -- (SyncMessageBuilder*) setContacts:(SyncMessageContacts*) value { - result.hasContacts = YES; - result.contacts = value; - return self; -} -- (SyncMessageBuilder*) setContactsBuilder:(SyncMessageContactsBuilder*) builderForValue { - return [self setContacts:[builderForValue build]]; -} -- (SyncMessageBuilder*) mergeContacts:(SyncMessageContacts*) value { - if (result.hasContacts && - result.contacts != [SyncMessageContacts defaultInstance]) { - result.contacts = - [[[SyncMessageContacts builderWithPrototype:result.contacts] mergeFrom:value] buildPartial]; - } else { - result.contacts = value; - } - result.hasContacts = YES; - return self; -} -- (SyncMessageBuilder*) clearContacts { - result.hasContacts = NO; - result.contacts = [SyncMessageContacts defaultInstance]; - return self; -} -- (BOOL) hasGroups { - return result.hasGroups; -} -- (SyncMessageGroups*) groups { - return result.groups; -} -- (SyncMessageBuilder*) setGroups:(SyncMessageGroups*) value { - result.hasGroups = YES; - result.groups = value; - return self; -} -- (SyncMessageBuilder*) setGroupsBuilder:(SyncMessageGroupsBuilder*) builderForValue { - return [self setGroups:[builderForValue build]]; -} -- (SyncMessageBuilder*) mergeGroups:(SyncMessageGroups*) value { - if (result.hasGroups && - result.groups != [SyncMessageGroups defaultInstance]) { - result.groups = - [[[SyncMessageGroups builderWithPrototype:result.groups] mergeFrom:value] buildPartial]; - } else { - result.groups = value; - } - result.hasGroups = YES; - return self; -} -- (SyncMessageBuilder*) clearGroups { - result.hasGroups = NO; - result.groups = [SyncMessageGroups defaultInstance]; - return self; -} -- (BOOL) hasRequest { - return result.hasRequest; -} -- (SyncMessageRequest*) request { - return result.request; -} -- (SyncMessageBuilder*) setRequest:(SyncMessageRequest*) value { - result.hasRequest = YES; - result.request = value; - return self; -} -- (SyncMessageBuilder*) setRequestBuilder:(SyncMessageRequestBuilder*) builderForValue { - return [self setRequest:[builderForValue build]]; -} -- (SyncMessageBuilder*) mergeRequest:(SyncMessageRequest*) value { - if (result.hasRequest && - result.request != [SyncMessageRequest defaultInstance]) { - result.request = - [[[SyncMessageRequest builderWithPrototype:result.request] mergeFrom:value] buildPartial]; - } else { - result.request = value; - } - result.hasRequest = YES; - return self; -} -- (SyncMessageBuilder*) clearRequest { - result.hasRequest = NO; - result.request = [SyncMessageRequest defaultInstance]; - return self; -} -@end - -@interface AttachmentPointer () -@property UInt64 id; -@property (strong) NSString* contentType; -@property (strong) NSData* key; -@property UInt32 size; -@property (strong) NSData* thumbnail; -@end - -@implementation AttachmentPointer - -- (BOOL) hasId { - return !!hasId_; -} -- (void) setHasId:(BOOL) value_ { - hasId_ = !!value_; -} -@synthesize id; -- (BOOL) hasContentType { - return !!hasContentType_; -} -- (void) setHasContentType:(BOOL) value_ { - hasContentType_ = !!value_; -} -@synthesize contentType; -- (BOOL) hasKey { - return !!hasKey_; -} -- (void) setHasKey:(BOOL) value_ { - hasKey_ = !!value_; -} -@synthesize key; -- (BOOL) hasSize { - return !!hasSize_; -} -- (void) setHasSize:(BOOL) value_ { - hasSize_ = !!value_; -} -@synthesize size; -- (BOOL) hasThumbnail { - return !!hasThumbnail_; -} -- (void) setHasThumbnail:(BOOL) value_ { - hasThumbnail_ = !!value_; -} -@synthesize thumbnail; -- (id) init { - if ((self = [super init])) { - self.id = 0L; - self.contentType = @""; - self.key = [NSData data]; - self.size = 0; - self.thumbnail = [NSData data]; - } - return self; -} -static AttachmentPointer* defaultAttachmentPointerInstance = nil; -+ (void) initialize { - if (self == [AttachmentPointer class]) { - defaultAttachmentPointerInstance = [[AttachmentPointer alloc] init]; - } -} -+ (AttachmentPointer*) defaultInstance { - return defaultAttachmentPointerInstance; -} -- (AttachmentPointer*) defaultInstance { - return defaultAttachmentPointerInstance; -} -- (BOOL) isInitialized { - return YES; -} -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { - if (self.hasId) { - [output writeFixed64:1 value:self.id]; - } - if (self.hasContentType) { - [output writeString:2 value:self.contentType]; - } - if (self.hasKey) { - [output writeData:3 value:self.key]; - } - if (self.hasSize) { - [output writeUInt32:4 value:self.size]; - } - if (self.hasThumbnail) { - [output writeData:5 value:self.thumbnail]; - } - [self.unknownFields writeToCodedOutputStream:output]; -} -- (SInt32) serializedSize { - __block SInt32 size_ = memoizedSerializedSize; - if (size_ != -1) { - return size_; - } - - size_ = 0; - if (self.hasId) { - size_ += computeFixed64Size(1, self.id); - } - if (self.hasContentType) { - size_ += computeStringSize(2, self.contentType); - } - if (self.hasKey) { - size_ += computeDataSize(3, self.key); - } - if (self.hasSize) { - size_ += computeUInt32Size(4, self.size); - } - if (self.hasThumbnail) { - size_ += computeDataSize(5, self.thumbnail); - } - size_ += self.unknownFields.serializedSize; - memoizedSerializedSize = size_; - return size_; -} -+ (AttachmentPointer*) parseFromData:(NSData*) data { - return (AttachmentPointer*)[[[AttachmentPointer builder] mergeFromData:data] build]; -} -+ (AttachmentPointer*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (AttachmentPointer*)[[[AttachmentPointer builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; -} -+ (AttachmentPointer*) parseFromInputStream:(NSInputStream*) input { - return (AttachmentPointer*)[[[AttachmentPointer builder] mergeFromInputStream:input] build]; -} -+ (AttachmentPointer*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (AttachmentPointer*)[[[AttachmentPointer builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (AttachmentPointer*) parseFromCodedInputStream:(PBCodedInputStream*) input { - return (AttachmentPointer*)[[[AttachmentPointer builder] mergeFromCodedInputStream:input] build]; -} -+ (AttachmentPointer*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (AttachmentPointer*)[[[AttachmentPointer builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (AttachmentPointerBuilder*) builder { - return [[AttachmentPointerBuilder alloc] init]; -} -+ (AttachmentPointerBuilder*) builderWithPrototype:(AttachmentPointer*) prototype { - return [[AttachmentPointer builder] mergeFrom:prototype]; -} -- (AttachmentPointerBuilder*) builder { - return [AttachmentPointer builder]; -} -- (AttachmentPointerBuilder*) toBuilder { - return [AttachmentPointer builderWithPrototype:self]; -} -- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { - if (self.hasId) { - [output appendFormat:@"%@%@: %@\n", indent, @"id", [NSNumber numberWithLongLong:self.id]]; - } - if (self.hasContentType) { - [output appendFormat:@"%@%@: %@\n", indent, @"contentType", self.contentType]; - } - if (self.hasKey) { - [output appendFormat:@"%@%@: %@\n", indent, @"key", self.key]; - } - if (self.hasSize) { - [output appendFormat:@"%@%@: %@\n", indent, @"size", [NSNumber numberWithInteger:self.size]]; - } - if (self.hasThumbnail) { - [output appendFormat:@"%@%@: %@\n", indent, @"thumbnail", self.thumbnail]; - } - [self.unknownFields writeDescriptionTo:output withIndent:indent]; -} -- (BOOL) isEqual:(id)other { - if (other == self) { - return YES; - } - if (![other isKindOfClass:[AttachmentPointer class]]) { - return NO; - } - AttachmentPointer *otherMessage = other; - return - self.hasId == otherMessage.hasId && - (!self.hasId || self.id == otherMessage.id) && - self.hasContentType == otherMessage.hasContentType && - (!self.hasContentType || [self.contentType isEqual:otherMessage.contentType]) && - self.hasKey == otherMessage.hasKey && - (!self.hasKey || [self.key isEqual:otherMessage.key]) && - self.hasSize == otherMessage.hasSize && - (!self.hasSize || self.size == otherMessage.size) && - self.hasThumbnail == otherMessage.hasThumbnail && - (!self.hasThumbnail || [self.thumbnail isEqual:otherMessage.thumbnail]) && - (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); -} -- (NSUInteger) hash { - __block NSUInteger hashCode = 7; - if (self.hasId) { - hashCode = hashCode * 31 + [[NSNumber numberWithLongLong:self.id] hash]; - } - if (self.hasContentType) { - hashCode = hashCode * 31 + [self.contentType hash]; - } - if (self.hasKey) { - hashCode = hashCode * 31 + [self.key hash]; - } - if (self.hasSize) { - hashCode = hashCode * 31 + [[NSNumber numberWithInteger:self.size] hash]; - } - if (self.hasThumbnail) { - hashCode = hashCode * 31 + [self.thumbnail hash]; - } - hashCode = hashCode * 31 + [self.unknownFields hash]; - return hashCode; -} -@end - -@interface AttachmentPointerBuilder() -@property (strong) AttachmentPointer* result; -@end - -@implementation AttachmentPointerBuilder -@synthesize result; -- (id) init { - if ((self = [super init])) { - self.result = [[AttachmentPointer alloc] init]; - } - return self; -} -- (PBGeneratedMessage*) internalGetResult { - return result; -} -- (AttachmentPointerBuilder*) clear { - self.result = [[AttachmentPointer alloc] init]; - return self; -} -- (AttachmentPointerBuilder*) clone { - return [AttachmentPointer builderWithPrototype:result]; -} -- (AttachmentPointer*) defaultInstance { - return [AttachmentPointer defaultInstance]; -} -- (AttachmentPointer*) build { - [self checkInitialized]; - return [self buildPartial]; -} -- (AttachmentPointer*) buildPartial { - AttachmentPointer* returnMe = result; - self.result = nil; - return returnMe; -} -- (AttachmentPointerBuilder*) mergeFrom:(AttachmentPointer*) other { - if (other == [AttachmentPointer defaultInstance]) { - return self; - } - if (other.hasId) { - [self setId:other.id]; - } - if (other.hasContentType) { - [self setContentType:other.contentType]; - } - if (other.hasKey) { - [self setKey:other.key]; - } - if (other.hasSize) { - [self setSize:other.size]; - } - if (other.hasThumbnail) { - [self setThumbnail:other.thumbnail]; - } - [self mergeUnknownFields:other.unknownFields]; - return self; -} -- (AttachmentPointerBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { - return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; -} -- (AttachmentPointerBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; - while (YES) { - SInt32 tag = [input readTag]; - switch (tag) { - case 0: - [self setUnknownFields:[unknownFields build]]; - return self; - default: { - if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) { - [self setUnknownFields:[unknownFields build]]; - return self; - } - break; - } - case 9: { - [self setId:[input readFixed64]]; - break; - } - case 18: { - [self setContentType:[input readString]]; - break; - } - case 26: { - [self setKey:[input readData]]; - break; - } - case 32: { - [self setSize:[input readUInt32]]; - break; - } - case 42: { - [self setThumbnail:[input readData]]; - break; - } - } - } -} -- (BOOL) hasId { - return result.hasId; -} -- (UInt64) id { - return result.id; -} -- (AttachmentPointerBuilder*) setId:(UInt64) value { - result.hasId = YES; - result.id = value; - return self; -} -- (AttachmentPointerBuilder*) clearId { - result.hasId = NO; - result.id = 0L; - return self; -} -- (BOOL) hasContentType { - return result.hasContentType; -} -- (NSString*) contentType { - return result.contentType; -} -- (AttachmentPointerBuilder*) setContentType:(NSString*) value { - result.hasContentType = YES; - result.contentType = value; - return self; -} -- (AttachmentPointerBuilder*) clearContentType { - result.hasContentType = NO; - result.contentType = @""; - return self; -} -- (BOOL) hasKey { - return result.hasKey; -} -- (NSData*) key { - return result.key; -} -- (AttachmentPointerBuilder*) setKey:(NSData*) value { - result.hasKey = YES; - result.key = value; - return self; -} -- (AttachmentPointerBuilder*) clearKey { - result.hasKey = NO; - result.key = [NSData data]; - return self; -} -- (BOOL) hasSize { - return result.hasSize; -} -- (UInt32) size { - return result.size; -} -- (AttachmentPointerBuilder*) setSize:(UInt32) value { - result.hasSize = YES; - result.size = value; - return self; -} -- (AttachmentPointerBuilder*) clearSize { - result.hasSize = NO; - result.size = 0; - return self; -} -- (BOOL) hasThumbnail { - return result.hasThumbnail; -} -- (NSData*) thumbnail { - return result.thumbnail; -} -- (AttachmentPointerBuilder*) setThumbnail:(NSData*) value { - result.hasThumbnail = YES; - result.thumbnail = value; - return self; -} -- (AttachmentPointerBuilder*) clearThumbnail { - result.hasThumbnail = NO; - result.thumbnail = [NSData data]; - return self; -} -@end - -@interface GroupContext () -@property (strong) NSData* id; -@property GroupContextType type; -@property (strong) NSString* name; -@property (strong) NSMutableArray * membersArray; -@property (strong) AttachmentPointer* avatar; -@end - -@implementation GroupContext - -- (BOOL) hasId { - return !!hasId_; -} -- (void) setHasId:(BOOL) value_ { - hasId_ = !!value_; -} -@synthesize id; -- (BOOL) hasType { - return !!hasType_; -} -- (void) setHasType:(BOOL) value_ { - hasType_ = !!value_; -} -@synthesize type; -- (BOOL) hasName { - return !!hasName_; -} -- (void) setHasName:(BOOL) value_ { - hasName_ = !!value_; -} -@synthesize name; -@synthesize membersArray; -@dynamic members; -- (BOOL) hasAvatar { - return !!hasAvatar_; -} -- (void) setHasAvatar:(BOOL) value_ { - hasAvatar_ = !!value_; -} -@synthesize avatar; -- (id) init { - if ((self = [super init])) { - self.id = [NSData data]; - self.type = GroupContextTypeUnknown; - self.name = @""; - self.avatar = [AttachmentPointer defaultInstance]; - } - return self; -} -static GroupContext* defaultGroupContextInstance = nil; -+ (void) initialize { - if (self == [GroupContext class]) { - defaultGroupContextInstance = [[GroupContext alloc] init]; - } -} -+ (GroupContext*) defaultInstance { - return defaultGroupContextInstance; -} -- (GroupContext*) defaultInstance { - return defaultGroupContextInstance; -} -- (NSArray *)members { - return membersArray; -} -- (NSString*)membersAtIndex:(NSUInteger)index { - return [membersArray objectAtIndex:index]; -} -- (BOOL) isInitialized { - return YES; -} -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { - if (self.hasId) { - [output writeData:1 value:self.id]; - } - if (self.hasType) { - [output writeEnum:2 value:self.type]; - } - if (self.hasName) { - [output writeString:3 value:self.name]; - } - [self.membersArray enumerateObjectsUsingBlock:^(NSString *element, NSUInteger idx, BOOL *stop) { - [output writeString:4 value:element]; - }]; - if (self.hasAvatar) { - [output writeMessage:5 value:self.avatar]; - } - [self.unknownFields writeToCodedOutputStream:output]; -} -- (SInt32) serializedSize { - __block SInt32 size_ = memoizedSerializedSize; - if (size_ != -1) { - return size_; - } - - size_ = 0; - if (self.hasId) { - size_ += computeDataSize(1, self.id); - } - if (self.hasType) { - size_ += computeEnumSize(2, self.type); - } - if (self.hasName) { - size_ += computeStringSize(3, self.name); - } - { - __block SInt32 dataSize = 0; - const NSUInteger count = self.membersArray.count; - [self.membersArray enumerateObjectsUsingBlock:^(NSString *element, NSUInteger idx, BOOL *stop) { - dataSize += computeStringSizeNoTag(element); - }]; - size_ += dataSize; - size_ += (SInt32)(1 * count); - } - if (self.hasAvatar) { - size_ += computeMessageSize(5, self.avatar); - } - size_ += self.unknownFields.serializedSize; - memoizedSerializedSize = size_; - return size_; -} -+ (GroupContext*) parseFromData:(NSData*) data { - return (GroupContext*)[[[GroupContext builder] mergeFromData:data] build]; -} -+ (GroupContext*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (GroupContext*)[[[GroupContext builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; -} -+ (GroupContext*) parseFromInputStream:(NSInputStream*) input { - return (GroupContext*)[[[GroupContext builder] mergeFromInputStream:input] build]; -} -+ (GroupContext*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (GroupContext*)[[[GroupContext builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (GroupContext*) parseFromCodedInputStream:(PBCodedInputStream*) input { - return (GroupContext*)[[[GroupContext builder] mergeFromCodedInputStream:input] build]; -} -+ (GroupContext*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (GroupContext*)[[[GroupContext builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (GroupContextBuilder*) builder { - return [[GroupContextBuilder alloc] init]; -} -+ (GroupContextBuilder*) builderWithPrototype:(GroupContext*) prototype { - return [[GroupContext builder] mergeFrom:prototype]; -} -- (GroupContextBuilder*) builder { - return [GroupContext builder]; -} -- (GroupContextBuilder*) toBuilder { - return [GroupContext builderWithPrototype:self]; -} -- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { - if (self.hasId) { - [output appendFormat:@"%@%@: %@\n", indent, @"id", self.id]; - } - if (self.hasType) { - [output appendFormat:@"%@%@: %d\n", indent, @"type", self.type]; - } - if (self.hasName) { - [output appendFormat:@"%@%@: %@\n", indent, @"name", self.name]; - } - [self.membersArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { - [output appendFormat:@"%@%@: %@\n", indent, @"members", obj]; - }]; - if (self.hasAvatar) { - [output appendFormat:@"%@%@ {\n", indent, @"avatar"]; - [self.avatar writeDescriptionTo:output - withIndent:[NSString stringWithFormat:@"%@ ", indent]]; - [output appendFormat:@"%@}\n", indent]; - } - [self.unknownFields writeDescriptionTo:output withIndent:indent]; -} -- (BOOL) isEqual:(id)other { - if (other == self) { - return YES; - } - if (![other isKindOfClass:[GroupContext class]]) { - return NO; - } - GroupContext *otherMessage = other; - return - self.hasId == otherMessage.hasId && - (!self.hasId || [self.id isEqual:otherMessage.id]) && - self.hasType == otherMessage.hasType && - (!self.hasType || self.type == otherMessage.type) && - self.hasName == otherMessage.hasName && - (!self.hasName || [self.name isEqual:otherMessage.name]) && - [self.membersArray isEqualToArray:otherMessage.membersArray] && - self.hasAvatar == otherMessage.hasAvatar && - (!self.hasAvatar || [self.avatar isEqual:otherMessage.avatar]) && - (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); -} -- (NSUInteger) hash { - __block NSUInteger hashCode = 7; - if (self.hasId) { - hashCode = hashCode * 31 + [self.id hash]; - } - if (self.hasType) { - hashCode = hashCode * 31 + self.type; - } - if (self.hasName) { - hashCode = hashCode * 31 + [self.name hash]; - } - [self.membersArray enumerateObjectsUsingBlock:^(id element, NSUInteger idx, BOOL *stop) { - hashCode = hashCode * 31 + [element hash]; - }]; - if (self.hasAvatar) { - hashCode = hashCode * 31 + [self.avatar hash]; - } - hashCode = hashCode * 31 + [self.unknownFields hash]; - return hashCode; -} -@end - -BOOL GroupContextTypeIsValidValue(GroupContextType value) { - switch (value) { - case GroupContextTypeUnknown: - case GroupContextTypeUpdate: - case GroupContextTypeDeliver: - case GroupContextTypeQuit: - return YES; - default: - return NO; - } -} -@interface GroupContextBuilder() -@property (strong) GroupContext* result; -@end - -@implementation GroupContextBuilder -@synthesize result; -- (id) init { - if ((self = [super init])) { - self.result = [[GroupContext alloc] init]; - } - return self; -} -- (PBGeneratedMessage*) internalGetResult { - return result; -} -- (GroupContextBuilder*) clear { - self.result = [[GroupContext alloc] init]; - return self; -} -- (GroupContextBuilder*) clone { - return [GroupContext builderWithPrototype:result]; -} -- (GroupContext*) defaultInstance { - return [GroupContext defaultInstance]; -} -- (GroupContext*) build { - [self checkInitialized]; - return [self buildPartial]; -} -- (GroupContext*) buildPartial { - GroupContext* returnMe = result; - self.result = nil; - return returnMe; -} -- (GroupContextBuilder*) mergeFrom:(GroupContext*) other { - if (other == [GroupContext defaultInstance]) { - return self; - } - if (other.hasId) { - [self setId:other.id]; - } - if (other.hasType) { - [self setType:other.type]; - } - if (other.hasName) { - [self setName:other.name]; - } - if (other.membersArray.count > 0) { - if (result.membersArray == nil) { - result.membersArray = [[NSMutableArray alloc] initWithArray:other.membersArray]; - } else { - [result.membersArray addObjectsFromArray:other.membersArray]; - } - } - if (other.hasAvatar) { - [self mergeAvatar:other.avatar]; - } - [self mergeUnknownFields:other.unknownFields]; - return self; -} -- (GroupContextBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { - return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; -} -- (GroupContextBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; - while (YES) { - SInt32 tag = [input readTag]; - switch (tag) { - case 0: - [self setUnknownFields:[unknownFields build]]; - return self; - default: { - if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) { - [self setUnknownFields:[unknownFields build]]; - return self; - } - break; - } - case 10: { - [self setId:[input readData]]; - break; - } - case 16: { - GroupContextType value = (GroupContextType)[input readEnum]; - if (GroupContextTypeIsValidValue(value)) { - [self setType:value]; - } else { - [unknownFields mergeVarintField:2 value:value]; - } - break; - } - case 26: { - [self setName:[input readString]]; - break; - } - case 34: { - [self addMembers:[input readString]]; - break; - } - case 42: { - AttachmentPointerBuilder* subBuilder = [AttachmentPointer builder]; - if (self.hasAvatar) { - [subBuilder mergeFrom:self.avatar]; - } - [input readMessage:subBuilder extensionRegistry:extensionRegistry]; - [self setAvatar:[subBuilder buildPartial]]; - break; - } - } - } -} -- (BOOL) hasId { - return result.hasId; -} -- (NSData*) id { - return result.id; -} -- (GroupContextBuilder*) setId:(NSData*) value { - result.hasId = YES; - result.id = value; - return self; -} -- (GroupContextBuilder*) clearId { - result.hasId = NO; - result.id = [NSData data]; - return self; -} -- (BOOL) hasType { - return result.hasType; -} -- (GroupContextType) type { - return result.type; -} -- (GroupContextBuilder*) setType:(GroupContextType) value { - result.hasType = YES; - result.type = value; - return self; -} -- (GroupContextBuilder*) clearType { - result.hasType = NO; - result.type = GroupContextTypeUnknown; - return self; -} -- (BOOL) hasName { - return result.hasName; -} -- (NSString*) name { - return result.name; -} -- (GroupContextBuilder*) setName:(NSString*) value { - result.hasName = YES; - result.name = value; - return self; -} -- (GroupContextBuilder*) clearName { - result.hasName = NO; - result.name = @""; - return self; -} -- (NSMutableArray *)members { - return result.membersArray; -} -- (NSString*)membersAtIndex:(NSUInteger)index { - return [result membersAtIndex:index]; -} -- (GroupContextBuilder *)addMembers:(NSString*)value { - if (result.membersArray == nil) { - result.membersArray = [[NSMutableArray alloc]init]; - } - [result.membersArray addObject:value]; - return self; -} -- (GroupContextBuilder *)setMembersArray:(NSArray *)array { - result.membersArray = [[NSMutableArray alloc] initWithArray:array]; - return self; -} -- (GroupContextBuilder *)clearMembers { - result.membersArray = nil; - return self; -} -- (BOOL) hasAvatar { - return result.hasAvatar; -} -- (AttachmentPointer*) avatar { - return result.avatar; -} -- (GroupContextBuilder*) setAvatar:(AttachmentPointer*) value { - result.hasAvatar = YES; - result.avatar = value; - return self; -} -- (GroupContextBuilder*) setAvatarBuilder:(AttachmentPointerBuilder*) builderForValue { - return [self setAvatar:[builderForValue build]]; -} -- (GroupContextBuilder*) mergeAvatar:(AttachmentPointer*) value { - if (result.hasAvatar && - result.avatar != [AttachmentPointer defaultInstance]) { - result.avatar = - [[[AttachmentPointer builderWithPrototype:result.avatar] mergeFrom:value] buildPartial]; - } else { - result.avatar = value; - } - result.hasAvatar = YES; - return self; -} -- (GroupContextBuilder*) clearAvatar { - result.hasAvatar = NO; - result.avatar = [AttachmentPointer defaultInstance]; - return self; -} -@end - -@interface ContactDetails () -@property (strong) NSString* number; -@property (strong) NSString* name; -@property (strong) ContactDetailsAvatar* avatar; -@end - -@implementation ContactDetails - -- (BOOL) hasNumber { - return !!hasNumber_; -} -- (void) setHasNumber:(BOOL) value_ { - hasNumber_ = !!value_; -} -@synthesize number; -- (BOOL) hasName { - return !!hasName_; -} -- (void) setHasName:(BOOL) value_ { - hasName_ = !!value_; -} -@synthesize name; -- (BOOL) hasAvatar { - return !!hasAvatar_; -} -- (void) setHasAvatar:(BOOL) value_ { - hasAvatar_ = !!value_; -} -@synthesize avatar; -- (id) init { - if ((self = [super init])) { - self.number = @""; - self.name = @""; - self.avatar = [ContactDetailsAvatar defaultInstance]; - } - return self; -} -static ContactDetails* defaultContactDetailsInstance = nil; -+ (void) initialize { - if (self == [ContactDetails class]) { - defaultContactDetailsInstance = [[ContactDetails alloc] init]; - } -} -+ (ContactDetails*) defaultInstance { - return defaultContactDetailsInstance; -} -- (ContactDetails*) defaultInstance { - return defaultContactDetailsInstance; -} -- (BOOL) isInitialized { - return YES; -} -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { - if (self.hasNumber) { - [output writeString:1 value:self.number]; - } - if (self.hasName) { - [output writeString:2 value:self.name]; - } - if (self.hasAvatar) { - [output writeMessage:3 value:self.avatar]; - } - [self.unknownFields writeToCodedOutputStream:output]; -} -- (SInt32) serializedSize { - __block SInt32 size_ = memoizedSerializedSize; - if (size_ != -1) { - return size_; - } - - size_ = 0; - if (self.hasNumber) { - size_ += computeStringSize(1, self.number); - } - if (self.hasName) { - size_ += computeStringSize(2, self.name); - } - if (self.hasAvatar) { - size_ += computeMessageSize(3, self.avatar); - } - size_ += self.unknownFields.serializedSize; - memoizedSerializedSize = size_; - return size_; -} -+ (ContactDetails*) parseFromData:(NSData*) data { - return (ContactDetails*)[[[ContactDetails builder] mergeFromData:data] build]; -} -+ (ContactDetails*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (ContactDetails*)[[[ContactDetails builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; -} -+ (ContactDetails*) parseFromInputStream:(NSInputStream*) input { - return (ContactDetails*)[[[ContactDetails builder] mergeFromInputStream:input] build]; -} -+ (ContactDetails*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (ContactDetails*)[[[ContactDetails builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (ContactDetails*) parseFromCodedInputStream:(PBCodedInputStream*) input { - return (ContactDetails*)[[[ContactDetails builder] mergeFromCodedInputStream:input] build]; -} -+ (ContactDetails*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (ContactDetails*)[[[ContactDetails builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (ContactDetailsBuilder*) builder { - return [[ContactDetailsBuilder alloc] init]; -} -+ (ContactDetailsBuilder*) builderWithPrototype:(ContactDetails*) prototype { - return [[ContactDetails builder] mergeFrom:prototype]; -} -- (ContactDetailsBuilder*) builder { - return [ContactDetails builder]; -} -- (ContactDetailsBuilder*) toBuilder { - return [ContactDetails builderWithPrototype:self]; -} -- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { - if (self.hasNumber) { - [output appendFormat:@"%@%@: %@\n", indent, @"number", self.number]; - } - if (self.hasName) { - [output appendFormat:@"%@%@: %@\n", indent, @"name", self.name]; - } - if (self.hasAvatar) { - [output appendFormat:@"%@%@ {\n", indent, @"avatar"]; - [self.avatar writeDescriptionTo:output - withIndent:[NSString stringWithFormat:@"%@ ", indent]]; - [output appendFormat:@"%@}\n", indent]; - } - [self.unknownFields writeDescriptionTo:output withIndent:indent]; -} -- (BOOL) isEqual:(id)other { - if (other == self) { - return YES; - } - if (![other isKindOfClass:[ContactDetails class]]) { - return NO; - } - ContactDetails *otherMessage = other; - return - self.hasNumber == otherMessage.hasNumber && - (!self.hasNumber || [self.number isEqual:otherMessage.number]) && - self.hasName == otherMessage.hasName && - (!self.hasName || [self.name isEqual:otherMessage.name]) && - self.hasAvatar == otherMessage.hasAvatar && - (!self.hasAvatar || [self.avatar isEqual:otherMessage.avatar]) && - (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); -} -- (NSUInteger) hash { - __block NSUInteger hashCode = 7; - if (self.hasNumber) { - hashCode = hashCode * 31 + [self.number hash]; - } - if (self.hasName) { - hashCode = hashCode * 31 + [self.name hash]; - } - if (self.hasAvatar) { - hashCode = hashCode * 31 + [self.avatar hash]; - } - hashCode = hashCode * 31 + [self.unknownFields hash]; - return hashCode; -} -@end - -@interface ContactDetailsAvatar () -@property (strong) NSString* contentType; -@property UInt32 length; -@end - -@implementation ContactDetailsAvatar - -- (BOOL) hasContentType { - return !!hasContentType_; -} -- (void) setHasContentType:(BOOL) value_ { - hasContentType_ = !!value_; -} -@synthesize contentType; -- (BOOL) hasLength { - return !!hasLength_; -} -- (void) setHasLength:(BOOL) value_ { - hasLength_ = !!value_; -} -@synthesize length; -- (id) init { - if ((self = [super init])) { - self.contentType = @""; - self.length = 0; - } - return self; -} -static ContactDetailsAvatar* defaultContactDetailsAvatarInstance = nil; -+ (void) initialize { - if (self == [ContactDetailsAvatar class]) { - defaultContactDetailsAvatarInstance = [[ContactDetailsAvatar alloc] init]; - } -} -+ (ContactDetailsAvatar*) defaultInstance { - return defaultContactDetailsAvatarInstance; -} -- (ContactDetailsAvatar*) defaultInstance { - return defaultContactDetailsAvatarInstance; -} -- (BOOL) isInitialized { - return YES; -} -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { - if (self.hasContentType) { - [output writeString:1 value:self.contentType]; - } - if (self.hasLength) { - [output writeUInt32:2 value:self.length]; - } - [self.unknownFields writeToCodedOutputStream:output]; -} -- (SInt32) serializedSize { - __block SInt32 size_ = memoizedSerializedSize; - if (size_ != -1) { - return size_; - } - - size_ = 0; - if (self.hasContentType) { - size_ += computeStringSize(1, self.contentType); - } - if (self.hasLength) { - size_ += computeUInt32Size(2, self.length); - } - size_ += self.unknownFields.serializedSize; - memoizedSerializedSize = size_; - return size_; -} -+ (ContactDetailsAvatar*) parseFromData:(NSData*) data { - return (ContactDetailsAvatar*)[[[ContactDetailsAvatar builder] mergeFromData:data] build]; -} -+ (ContactDetailsAvatar*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (ContactDetailsAvatar*)[[[ContactDetailsAvatar builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; -} -+ (ContactDetailsAvatar*) parseFromInputStream:(NSInputStream*) input { - return (ContactDetailsAvatar*)[[[ContactDetailsAvatar builder] mergeFromInputStream:input] build]; -} -+ (ContactDetailsAvatar*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (ContactDetailsAvatar*)[[[ContactDetailsAvatar builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (ContactDetailsAvatar*) parseFromCodedInputStream:(PBCodedInputStream*) input { - return (ContactDetailsAvatar*)[[[ContactDetailsAvatar builder] mergeFromCodedInputStream:input] build]; -} -+ (ContactDetailsAvatar*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (ContactDetailsAvatar*)[[[ContactDetailsAvatar builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (ContactDetailsAvatarBuilder*) builder { - return [[ContactDetailsAvatarBuilder alloc] init]; -} -+ (ContactDetailsAvatarBuilder*) builderWithPrototype:(ContactDetailsAvatar*) prototype { - return [[ContactDetailsAvatar builder] mergeFrom:prototype]; -} -- (ContactDetailsAvatarBuilder*) builder { - return [ContactDetailsAvatar builder]; -} -- (ContactDetailsAvatarBuilder*) toBuilder { - return [ContactDetailsAvatar builderWithPrototype:self]; -} -- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { - if (self.hasContentType) { - [output appendFormat:@"%@%@: %@\n", indent, @"contentType", self.contentType]; - } - if (self.hasLength) { - [output appendFormat:@"%@%@: %@\n", indent, @"length", [NSNumber numberWithInteger:self.length]]; - } - [self.unknownFields writeDescriptionTo:output withIndent:indent]; -} -- (BOOL) isEqual:(id)other { - if (other == self) { - return YES; - } - if (![other isKindOfClass:[ContactDetailsAvatar class]]) { - return NO; - } - ContactDetailsAvatar *otherMessage = other; - return - self.hasContentType == otherMessage.hasContentType && - (!self.hasContentType || [self.contentType isEqual:otherMessage.contentType]) && - self.hasLength == otherMessage.hasLength && - (!self.hasLength || self.length == otherMessage.length) && - (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); -} -- (NSUInteger) hash { - __block NSUInteger hashCode = 7; - if (self.hasContentType) { - hashCode = hashCode * 31 + [self.contentType hash]; - } - if (self.hasLength) { - hashCode = hashCode * 31 + [[NSNumber numberWithInteger:self.length] hash]; - } - hashCode = hashCode * 31 + [self.unknownFields hash]; - return hashCode; -} -@end - -@interface ContactDetailsAvatarBuilder() -@property (strong) ContactDetailsAvatar* result; -@end - -@implementation ContactDetailsAvatarBuilder -@synthesize result; -- (id) init { - if ((self = [super init])) { - self.result = [[ContactDetailsAvatar alloc] init]; - } - return self; -} -- (PBGeneratedMessage*) internalGetResult { - return result; -} -- (ContactDetailsAvatarBuilder*) clear { - self.result = [[ContactDetailsAvatar alloc] init]; - return self; -} -- (ContactDetailsAvatarBuilder*) clone { - return [ContactDetailsAvatar builderWithPrototype:result]; -} -- (ContactDetailsAvatar*) defaultInstance { - return [ContactDetailsAvatar defaultInstance]; -} -- (ContactDetailsAvatar*) build { - [self checkInitialized]; - return [self buildPartial]; -} -- (ContactDetailsAvatar*) buildPartial { - ContactDetailsAvatar* returnMe = result; - self.result = nil; - return returnMe; -} -- (ContactDetailsAvatarBuilder*) mergeFrom:(ContactDetailsAvatar*) other { - if (other == [ContactDetailsAvatar defaultInstance]) { - return self; - } - if (other.hasContentType) { - [self setContentType:other.contentType]; - } - if (other.hasLength) { - [self setLength:other.length]; - } - [self mergeUnknownFields:other.unknownFields]; - return self; -} -- (ContactDetailsAvatarBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { - return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; -} -- (ContactDetailsAvatarBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; - while (YES) { - SInt32 tag = [input readTag]; - switch (tag) { - case 0: - [self setUnknownFields:[unknownFields build]]; - return self; - default: { - if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) { - [self setUnknownFields:[unknownFields build]]; - return self; - } - break; - } - case 10: { - [self setContentType:[input readString]]; - break; - } - case 16: { - [self setLength:[input readUInt32]]; - break; - } - } - } -} -- (BOOL) hasContentType { - return result.hasContentType; -} -- (NSString*) contentType { - return result.contentType; -} -- (ContactDetailsAvatarBuilder*) setContentType:(NSString*) value { - result.hasContentType = YES; - result.contentType = value; - return self; -} -- (ContactDetailsAvatarBuilder*) clearContentType { - result.hasContentType = NO; - result.contentType = @""; - return self; -} -- (BOOL) hasLength { - return result.hasLength; -} -- (UInt32) length { - return result.length; -} -- (ContactDetailsAvatarBuilder*) setLength:(UInt32) value { - result.hasLength = YES; - result.length = value; - return self; -} -- (ContactDetailsAvatarBuilder*) clearLength { - result.hasLength = NO; - result.length = 0; - return self; -} -@end - -@interface ContactDetailsBuilder() -@property (strong) ContactDetails* result; -@end - -@implementation ContactDetailsBuilder -@synthesize result; -- (id) init { - if ((self = [super init])) { - self.result = [[ContactDetails alloc] init]; - } - return self; -} -- (PBGeneratedMessage*) internalGetResult { - return result; -} -- (ContactDetailsBuilder*) clear { - self.result = [[ContactDetails alloc] init]; - return self; -} -- (ContactDetailsBuilder*) clone { - return [ContactDetails builderWithPrototype:result]; -} -- (ContactDetails*) defaultInstance { - return [ContactDetails defaultInstance]; -} -- (ContactDetails*) build { - [self checkInitialized]; - return [self buildPartial]; -} -- (ContactDetails*) buildPartial { - ContactDetails* returnMe = result; - self.result = nil; - return returnMe; -} -- (ContactDetailsBuilder*) mergeFrom:(ContactDetails*) other { - if (other == [ContactDetails defaultInstance]) { - return self; - } - if (other.hasNumber) { - [self setNumber:other.number]; - } - if (other.hasName) { - [self setName:other.name]; - } - if (other.hasAvatar) { - [self mergeAvatar:other.avatar]; - } - [self mergeUnknownFields:other.unknownFields]; - return self; -} -- (ContactDetailsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { - return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; -} -- (ContactDetailsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; - while (YES) { - SInt32 tag = [input readTag]; - switch (tag) { - case 0: - [self setUnknownFields:[unknownFields build]]; - return self; - default: { - if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) { - [self setUnknownFields:[unknownFields build]]; - return self; - } - break; - } - case 10: { - [self setNumber:[input readString]]; - break; - } - case 18: { - [self setName:[input readString]]; - break; - } - case 26: { - ContactDetailsAvatarBuilder* subBuilder = [ContactDetailsAvatar builder]; - if (self.hasAvatar) { - [subBuilder mergeFrom:self.avatar]; - } - [input readMessage:subBuilder extensionRegistry:extensionRegistry]; - [self setAvatar:[subBuilder buildPartial]]; - break; - } - } - } -} -- (BOOL) hasNumber { - return result.hasNumber; -} -- (NSString*) number { - return result.number; -} -- (ContactDetailsBuilder*) setNumber:(NSString*) value { - result.hasNumber = YES; - result.number = value; - return self; -} -- (ContactDetailsBuilder*) clearNumber { - result.hasNumber = NO; - result.number = @""; - return self; -} -- (BOOL) hasName { - return result.hasName; -} -- (NSString*) name { - return result.name; -} -- (ContactDetailsBuilder*) setName:(NSString*) value { - result.hasName = YES; - result.name = value; - return self; -} -- (ContactDetailsBuilder*) clearName { - result.hasName = NO; - result.name = @""; - return self; -} -- (BOOL) hasAvatar { - return result.hasAvatar; -} -- (ContactDetailsAvatar*) avatar { - return result.avatar; -} -- (ContactDetailsBuilder*) setAvatar:(ContactDetailsAvatar*) value { - result.hasAvatar = YES; - result.avatar = value; - return self; -} -- (ContactDetailsBuilder*) setAvatarBuilder:(ContactDetailsAvatarBuilder*) builderForValue { - return [self setAvatar:[builderForValue build]]; -} -- (ContactDetailsBuilder*) mergeAvatar:(ContactDetailsAvatar*) value { - if (result.hasAvatar && - result.avatar != [ContactDetailsAvatar defaultInstance]) { - result.avatar = - [[[ContactDetailsAvatar builderWithPrototype:result.avatar] mergeFrom:value] buildPartial]; - } else { - result.avatar = value; - } - result.hasAvatar = YES; - return self; -} -- (ContactDetailsBuilder*) clearAvatar { - result.hasAvatar = NO; - result.avatar = [ContactDetailsAvatar defaultInstance]; - return self; -} -@end - -@interface GroupDetails () -@property (strong) NSData* id; -@property (strong) NSString* name; -@property (strong) NSMutableArray * membersArray; -@property (strong) GroupDetailsAvatar* avatar; -@end - -@implementation GroupDetails - -- (BOOL) hasId { - return !!hasId_; -} -- (void) setHasId:(BOOL) value_ { - hasId_ = !!value_; -} -@synthesize id; -- (BOOL) hasName { - return !!hasName_; -} -- (void) setHasName:(BOOL) value_ { - hasName_ = !!value_; -} -@synthesize name; -@synthesize membersArray; -@dynamic members; -- (BOOL) hasAvatar { - return !!hasAvatar_; -} -- (void) setHasAvatar:(BOOL) value_ { - hasAvatar_ = !!value_; -} -@synthesize avatar; -- (id) init { - if ((self = [super init])) { - self.id = [NSData data]; - self.name = @""; - self.avatar = [GroupDetailsAvatar defaultInstance]; - } - return self; -} -static GroupDetails* defaultGroupDetailsInstance = nil; -+ (void) initialize { - if (self == [GroupDetails class]) { - defaultGroupDetailsInstance = [[GroupDetails alloc] init]; - } -} -+ (GroupDetails*) defaultInstance { - return defaultGroupDetailsInstance; -} -- (GroupDetails*) defaultInstance { - return defaultGroupDetailsInstance; -} -- (NSArray *)members { - return membersArray; -} -- (NSString*)membersAtIndex:(NSUInteger)index { - return [membersArray objectAtIndex:index]; -} -- (BOOL) isInitialized { - return YES; -} -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { - if (self.hasId) { - [output writeData:1 value:self.id]; - } - if (self.hasName) { - [output writeString:2 value:self.name]; - } - [self.membersArray enumerateObjectsUsingBlock:^(NSString *element, NSUInteger idx, BOOL *stop) { - [output writeString:3 value:element]; - }]; - if (self.hasAvatar) { - [output writeMessage:4 value:self.avatar]; - } - [self.unknownFields writeToCodedOutputStream:output]; -} -- (SInt32) serializedSize { - __block SInt32 size_ = memoizedSerializedSize; - if (size_ != -1) { - return size_; - } - - size_ = 0; - if (self.hasId) { - size_ += computeDataSize(1, self.id); - } - if (self.hasName) { - size_ += computeStringSize(2, self.name); - } - { - __block SInt32 dataSize = 0; - const NSUInteger count = self.membersArray.count; - [self.membersArray enumerateObjectsUsingBlock:^(NSString *element, NSUInteger idx, BOOL *stop) { - dataSize += computeStringSizeNoTag(element); - }]; - size_ += dataSize; - size_ += (SInt32)(1 * count); - } - if (self.hasAvatar) { - size_ += computeMessageSize(4, self.avatar); - } - size_ += self.unknownFields.serializedSize; - memoizedSerializedSize = size_; - return size_; -} -+ (GroupDetails*) parseFromData:(NSData*) data { - return (GroupDetails*)[[[GroupDetails builder] mergeFromData:data] build]; -} -+ (GroupDetails*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (GroupDetails*)[[[GroupDetails builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; -} -+ (GroupDetails*) parseFromInputStream:(NSInputStream*) input { - return (GroupDetails*)[[[GroupDetails builder] mergeFromInputStream:input] build]; -} -+ (GroupDetails*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (GroupDetails*)[[[GroupDetails builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (GroupDetails*) parseFromCodedInputStream:(PBCodedInputStream*) input { - return (GroupDetails*)[[[GroupDetails builder] mergeFromCodedInputStream:input] build]; -} -+ (GroupDetails*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (GroupDetails*)[[[GroupDetails builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (GroupDetailsBuilder*) builder { - return [[GroupDetailsBuilder alloc] init]; -} -+ (GroupDetailsBuilder*) builderWithPrototype:(GroupDetails*) prototype { - return [[GroupDetails builder] mergeFrom:prototype]; -} -- (GroupDetailsBuilder*) builder { - return [GroupDetails builder]; -} -- (GroupDetailsBuilder*) toBuilder { - return [GroupDetails builderWithPrototype:self]; -} -- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { - if (self.hasId) { - [output appendFormat:@"%@%@: %@\n", indent, @"id", self.id]; - } - if (self.hasName) { - [output appendFormat:@"%@%@: %@\n", indent, @"name", self.name]; - } - [self.membersArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { - [output appendFormat:@"%@%@: %@\n", indent, @"members", obj]; - }]; - if (self.hasAvatar) { - [output appendFormat:@"%@%@ {\n", indent, @"avatar"]; - [self.avatar writeDescriptionTo:output - withIndent:[NSString stringWithFormat:@"%@ ", indent]]; - [output appendFormat:@"%@}\n", indent]; - } - [self.unknownFields writeDescriptionTo:output withIndent:indent]; -} -- (BOOL) isEqual:(id)other { - if (other == self) { - return YES; - } - if (![other isKindOfClass:[GroupDetails class]]) { - return NO; - } - GroupDetails *otherMessage = other; - return - self.hasId == otherMessage.hasId && - (!self.hasId || [self.id isEqual:otherMessage.id]) && - self.hasName == otherMessage.hasName && - (!self.hasName || [self.name isEqual:otherMessage.name]) && - [self.membersArray isEqualToArray:otherMessage.membersArray] && - self.hasAvatar == otherMessage.hasAvatar && - (!self.hasAvatar || [self.avatar isEqual:otherMessage.avatar]) && - (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); -} -- (NSUInteger) hash { - __block NSUInteger hashCode = 7; - if (self.hasId) { - hashCode = hashCode * 31 + [self.id hash]; - } - if (self.hasName) { - hashCode = hashCode * 31 + [self.name hash]; - } - [self.membersArray enumerateObjectsUsingBlock:^(id element, NSUInteger idx, BOOL *stop) { - hashCode = hashCode * 31 + [element hash]; - }]; - if (self.hasAvatar) { - hashCode = hashCode * 31 + [self.avatar hash]; - } - hashCode = hashCode * 31 + [self.unknownFields hash]; - return hashCode; -} -@end - -@interface GroupDetailsAvatar () -@property (strong) NSString* contentType; -@property UInt32 length; -@end - -@implementation GroupDetailsAvatar - -- (BOOL) hasContentType { - return !!hasContentType_; -} -- (void) setHasContentType:(BOOL) value_ { - hasContentType_ = !!value_; -} -@synthesize contentType; -- (BOOL) hasLength { - return !!hasLength_; -} -- (void) setHasLength:(BOOL) value_ { - hasLength_ = !!value_; -} -@synthesize length; -- (id) init { - if ((self = [super init])) { - self.contentType = @""; - self.length = 0; - } - return self; -} -static GroupDetailsAvatar* defaultGroupDetailsAvatarInstance = nil; -+ (void) initialize { - if (self == [GroupDetailsAvatar class]) { - defaultGroupDetailsAvatarInstance = [[GroupDetailsAvatar alloc] init]; - } -} -+ (GroupDetailsAvatar*) defaultInstance { - return defaultGroupDetailsAvatarInstance; -} -- (GroupDetailsAvatar*) defaultInstance { - return defaultGroupDetailsAvatarInstance; -} -- (BOOL) isInitialized { - return YES; -} -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { - if (self.hasContentType) { - [output writeString:1 value:self.contentType]; - } - if (self.hasLength) { - [output writeUInt32:2 value:self.length]; - } - [self.unknownFields writeToCodedOutputStream:output]; -} -- (SInt32) serializedSize { - __block SInt32 size_ = memoizedSerializedSize; - if (size_ != -1) { - return size_; - } - - size_ = 0; - if (self.hasContentType) { - size_ += computeStringSize(1, self.contentType); - } - if (self.hasLength) { - size_ += computeUInt32Size(2, self.length); - } - size_ += self.unknownFields.serializedSize; - memoizedSerializedSize = size_; - return size_; -} -+ (GroupDetailsAvatar*) parseFromData:(NSData*) data { - return (GroupDetailsAvatar*)[[[GroupDetailsAvatar builder] mergeFromData:data] build]; -} -+ (GroupDetailsAvatar*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (GroupDetailsAvatar*)[[[GroupDetailsAvatar builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; -} -+ (GroupDetailsAvatar*) parseFromInputStream:(NSInputStream*) input { - return (GroupDetailsAvatar*)[[[GroupDetailsAvatar builder] mergeFromInputStream:input] build]; -} -+ (GroupDetailsAvatar*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (GroupDetailsAvatar*)[[[GroupDetailsAvatar builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (GroupDetailsAvatar*) parseFromCodedInputStream:(PBCodedInputStream*) input { - return (GroupDetailsAvatar*)[[[GroupDetailsAvatar builder] mergeFromCodedInputStream:input] build]; -} -+ (GroupDetailsAvatar*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (GroupDetailsAvatar*)[[[GroupDetailsAvatar builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (GroupDetailsAvatarBuilder*) builder { - return [[GroupDetailsAvatarBuilder alloc] init]; -} -+ (GroupDetailsAvatarBuilder*) builderWithPrototype:(GroupDetailsAvatar*) prototype { - return [[GroupDetailsAvatar builder] mergeFrom:prototype]; -} -- (GroupDetailsAvatarBuilder*) builder { - return [GroupDetailsAvatar builder]; -} -- (GroupDetailsAvatarBuilder*) toBuilder { - return [GroupDetailsAvatar builderWithPrototype:self]; -} -- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { - if (self.hasContentType) { - [output appendFormat:@"%@%@: %@\n", indent, @"contentType", self.contentType]; - } - if (self.hasLength) { - [output appendFormat:@"%@%@: %@\n", indent, @"length", [NSNumber numberWithInteger:self.length]]; - } - [self.unknownFields writeDescriptionTo:output withIndent:indent]; -} -- (BOOL) isEqual:(id)other { - if (other == self) { - return YES; - } - if (![other isKindOfClass:[GroupDetailsAvatar class]]) { - return NO; - } - GroupDetailsAvatar *otherMessage = other; - return - self.hasContentType == otherMessage.hasContentType && - (!self.hasContentType || [self.contentType isEqual:otherMessage.contentType]) && - self.hasLength == otherMessage.hasLength && - (!self.hasLength || self.length == otherMessage.length) && - (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); -} -- (NSUInteger) hash { - __block NSUInteger hashCode = 7; - if (self.hasContentType) { - hashCode = hashCode * 31 + [self.contentType hash]; - } - if (self.hasLength) { - hashCode = hashCode * 31 + [[NSNumber numberWithInteger:self.length] hash]; - } - hashCode = hashCode * 31 + [self.unknownFields hash]; - return hashCode; -} -@end - -@interface GroupDetailsAvatarBuilder() -@property (strong) GroupDetailsAvatar* result; -@end - -@implementation GroupDetailsAvatarBuilder -@synthesize result; -- (id) init { - if ((self = [super init])) { - self.result = [[GroupDetailsAvatar alloc] init]; - } - return self; -} -- (PBGeneratedMessage*) internalGetResult { - return result; -} -- (GroupDetailsAvatarBuilder*) clear { - self.result = [[GroupDetailsAvatar alloc] init]; - return self; -} -- (GroupDetailsAvatarBuilder*) clone { - return [GroupDetailsAvatar builderWithPrototype:result]; -} -- (GroupDetailsAvatar*) defaultInstance { - return [GroupDetailsAvatar defaultInstance]; -} -- (GroupDetailsAvatar*) build { - [self checkInitialized]; - return [self buildPartial]; -} -- (GroupDetailsAvatar*) buildPartial { - GroupDetailsAvatar* returnMe = result; - self.result = nil; - return returnMe; -} -- (GroupDetailsAvatarBuilder*) mergeFrom:(GroupDetailsAvatar*) other { - if (other == [GroupDetailsAvatar defaultInstance]) { - return self; - } - if (other.hasContentType) { - [self setContentType:other.contentType]; - } - if (other.hasLength) { - [self setLength:other.length]; - } - [self mergeUnknownFields:other.unknownFields]; - return self; -} -- (GroupDetailsAvatarBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { - return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; -} -- (GroupDetailsAvatarBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; - while (YES) { - SInt32 tag = [input readTag]; - switch (tag) { - case 0: - [self setUnknownFields:[unknownFields build]]; - return self; - default: { - if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) { - [self setUnknownFields:[unknownFields build]]; - return self; - } - break; - } - case 10: { - [self setContentType:[input readString]]; - break; - } - case 16: { - [self setLength:[input readUInt32]]; - break; - } - } - } -} -- (BOOL) hasContentType { - return result.hasContentType; -} -- (NSString*) contentType { - return result.contentType; -} -- (GroupDetailsAvatarBuilder*) setContentType:(NSString*) value { - result.hasContentType = YES; - result.contentType = value; - return self; -} -- (GroupDetailsAvatarBuilder*) clearContentType { - result.hasContentType = NO; - result.contentType = @""; - return self; -} -- (BOOL) hasLength { - return result.hasLength; -} -- (UInt32) length { - return result.length; -} -- (GroupDetailsAvatarBuilder*) setLength:(UInt32) value { - result.hasLength = YES; - result.length = value; - return self; -} -- (GroupDetailsAvatarBuilder*) clearLength { - result.hasLength = NO; - result.length = 0; - return self; -} -@end - -@interface GroupDetailsBuilder() -@property (strong) GroupDetails* result; -@end - -@implementation GroupDetailsBuilder -@synthesize result; -- (id) init { - if ((self = [super init])) { - self.result = [[GroupDetails alloc] init]; - } - return self; -} -- (PBGeneratedMessage*) internalGetResult { - return result; -} -- (GroupDetailsBuilder*) clear { - self.result = [[GroupDetails alloc] init]; - return self; -} -- (GroupDetailsBuilder*) clone { - return [GroupDetails builderWithPrototype:result]; -} -- (GroupDetails*) defaultInstance { - return [GroupDetails defaultInstance]; -} -- (GroupDetails*) build { - [self checkInitialized]; - return [self buildPartial]; -} -- (GroupDetails*) buildPartial { - GroupDetails* returnMe = result; - self.result = nil; - return returnMe; -} -- (GroupDetailsBuilder*) mergeFrom:(GroupDetails*) other { - if (other == [GroupDetails defaultInstance]) { - return self; - } - if (other.hasId) { - [self setId:other.id]; - } - if (other.hasName) { - [self setName:other.name]; - } - if (other.membersArray.count > 0) { - if (result.membersArray == nil) { - result.membersArray = [[NSMutableArray alloc] initWithArray:other.membersArray]; - } else { - [result.membersArray addObjectsFromArray:other.membersArray]; - } - } - if (other.hasAvatar) { - [self mergeAvatar:other.avatar]; - } - [self mergeUnknownFields:other.unknownFields]; - return self; -} -- (GroupDetailsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { - return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; -} -- (GroupDetailsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; - while (YES) { - SInt32 tag = [input readTag]; - switch (tag) { - case 0: - [self setUnknownFields:[unknownFields build]]; - return self; - default: { - if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) { - [self setUnknownFields:[unknownFields build]]; - return self; - } - break; - } - case 10: { - [self setId:[input readData]]; - break; - } - case 18: { - [self setName:[input readString]]; - break; - } - case 26: { - [self addMembers:[input readString]]; - break; - } - case 34: { - GroupDetailsAvatarBuilder* subBuilder = [GroupDetailsAvatar builder]; - if (self.hasAvatar) { - [subBuilder mergeFrom:self.avatar]; - } - [input readMessage:subBuilder extensionRegistry:extensionRegistry]; - [self setAvatar:[subBuilder buildPartial]]; - break; - } - } - } -} -- (BOOL) hasId { - return result.hasId; -} -- (NSData*) id { - return result.id; -} -- (GroupDetailsBuilder*) setId:(NSData*) value { - result.hasId = YES; - result.id = value; - return self; -} -- (GroupDetailsBuilder*) clearId { - result.hasId = NO; - result.id = [NSData data]; - return self; -} -- (BOOL) hasName { - return result.hasName; -} -- (NSString*) name { - return result.name; -} -- (GroupDetailsBuilder*) setName:(NSString*) value { - result.hasName = YES; - result.name = value; - return self; -} -- (GroupDetailsBuilder*) clearName { - result.hasName = NO; - result.name = @""; - return self; -} -- (NSMutableArray *)members { - return result.membersArray; -} -- (NSString*)membersAtIndex:(NSUInteger)index { - return [result membersAtIndex:index]; -} -- (GroupDetailsBuilder *)addMembers:(NSString*)value { - if (result.membersArray == nil) { - result.membersArray = [[NSMutableArray alloc]init]; - } - [result.membersArray addObject:value]; - return self; -} -- (GroupDetailsBuilder *)setMembersArray:(NSArray *)array { - result.membersArray = [[NSMutableArray alloc] initWithArray:array]; - return self; -} -- (GroupDetailsBuilder *)clearMembers { - result.membersArray = nil; - return self; -} -- (BOOL) hasAvatar { - return result.hasAvatar; -} -- (GroupDetailsAvatar*) avatar { - return result.avatar; -} -- (GroupDetailsBuilder*) setAvatar:(GroupDetailsAvatar*) value { - result.hasAvatar = YES; - result.avatar = value; - return self; -} -- (GroupDetailsBuilder*) setAvatarBuilder:(GroupDetailsAvatarBuilder*) builderForValue { - return [self setAvatar:[builderForValue build]]; -} -- (GroupDetailsBuilder*) mergeAvatar:(GroupDetailsAvatar*) value { - if (result.hasAvatar && - result.avatar != [GroupDetailsAvatar defaultInstance]) { - result.avatar = - [[[GroupDetailsAvatar builderWithPrototype:result.avatar] mergeFrom:value] buildPartial]; - } else { - result.avatar = value; - } - result.hasAvatar = YES; - return self; -} -- (GroupDetailsBuilder*) clearAvatar { - result.hasAvatar = NO; - result.avatar = [GroupDetailsAvatar defaultInstance]; - return self; -} -@end - - -// @@protoc_insertion_point(global_scope) diff --git a/protobuf/WebSocketResources.pb.h b/protobuf/WebSocketResources.pb.h deleted file mode 100644 index 46da19a..0000000 --- a/protobuf/WebSocketResources.pb.h +++ /dev/null @@ -1,264 +0,0 @@ -// Generated by the protocol buffer compiler. DO NOT EDIT! - -#import "ProtocolBuffers.h" - -// @@protoc_insertion_point(imports) - -@class WebSocketMessage; -@class WebSocketMessageBuilder; -@class WebSocketRequestMessage; -@class WebSocketRequestMessageBuilder; -@class WebSocketResponseMessage; -@class WebSocketResponseMessageBuilder; -#ifndef __has_feature - #define __has_feature(x) 0 // Compatibility with non-clang compilers. -#endif // __has_feature - -#ifndef NS_RETURNS_NOT_RETAINED - #if __has_feature(attribute_ns_returns_not_retained) - #define NS_RETURNS_NOT_RETAINED __attribute__((ns_returns_not_retained)) - #else - #define NS_RETURNS_NOT_RETAINED - #endif -#endif - -typedef enum { - WebSocketMessageTypeUnknown = 0, - WebSocketMessageTypeRequest = 1, - WebSocketMessageTypeResponse = 2, -} WebSocketMessageType; - -BOOL WebSocketMessageTypeIsValidValue(WebSocketMessageType value); - - -@interface WebSocketResourcesRoot : NSObject { -} -+ (PBExtensionRegistry*) extensionRegistry; -+ (void) registerAllExtensions:(PBMutableExtensionRegistry*) registry; -@end - -@interface WebSocketRequestMessage : PBGeneratedMessage { -@private - BOOL hasId_:1; - BOOL hasVerb_:1; - BOOL hasPath_:1; - BOOL hasBody_:1; - UInt64 id; - NSString* verb; - NSString* path; - NSData* body; -} -- (BOOL) hasVerb; -- (BOOL) hasPath; -- (BOOL) hasBody; -- (BOOL) hasId; -@property (readonly, strong) NSString* verb; -@property (readonly, strong) NSString* path; -@property (readonly, strong) NSData* body; -@property (readonly) UInt64 id; - -+ (WebSocketRequestMessage*) defaultInstance; -- (WebSocketRequestMessage*) defaultInstance; - -- (BOOL) isInitialized; -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output; -- (WebSocketRequestMessageBuilder*) builder; -+ (WebSocketRequestMessageBuilder*) builder; -+ (WebSocketRequestMessageBuilder*) builderWithPrototype:(WebSocketRequestMessage*) prototype; -- (WebSocketRequestMessageBuilder*) toBuilder; - -+ (WebSocketRequestMessage*) parseFromData:(NSData*) data; -+ (WebSocketRequestMessage*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (WebSocketRequestMessage*) parseFromInputStream:(NSInputStream*) input; -+ (WebSocketRequestMessage*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (WebSocketRequestMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input; -+ (WebSocketRequestMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -@end - -@interface WebSocketRequestMessageBuilder : PBGeneratedMessageBuilder { -@private - WebSocketRequestMessage* result; -} - -- (WebSocketRequestMessage*) defaultInstance; - -- (WebSocketRequestMessageBuilder*) clear; -- (WebSocketRequestMessageBuilder*) clone; - -- (WebSocketRequestMessage*) build; -- (WebSocketRequestMessage*) buildPartial; - -- (WebSocketRequestMessageBuilder*) mergeFrom:(WebSocketRequestMessage*) other; -- (WebSocketRequestMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input; -- (WebSocketRequestMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; - -- (BOOL) hasVerb; -- (NSString*) verb; -- (WebSocketRequestMessageBuilder*) setVerb:(NSString*) value; -- (WebSocketRequestMessageBuilder*) clearVerb; - -- (BOOL) hasPath; -- (NSString*) path; -- (WebSocketRequestMessageBuilder*) setPath:(NSString*) value; -- (WebSocketRequestMessageBuilder*) clearPath; - -- (BOOL) hasBody; -- (NSData*) body; -- (WebSocketRequestMessageBuilder*) setBody:(NSData*) value; -- (WebSocketRequestMessageBuilder*) clearBody; - -- (BOOL) hasId; -- (UInt64) id; -- (WebSocketRequestMessageBuilder*) setId:(UInt64) value; -- (WebSocketRequestMessageBuilder*) clearId; -@end - -@interface WebSocketResponseMessage : PBGeneratedMessage { -@private - BOOL hasId_:1; - BOOL hasMessage_:1; - BOOL hasBody_:1; - BOOL hasStatus_:1; - UInt64 id; - NSString* message; - NSData* body; - UInt32 status; -} -- (BOOL) hasId; -- (BOOL) hasStatus; -- (BOOL) hasMessage; -- (BOOL) hasBody; -@property (readonly) UInt64 id; -@property (readonly) UInt32 status; -@property (readonly, strong) NSString* message; -@property (readonly, strong) NSData* body; - -+ (WebSocketResponseMessage*) defaultInstance; -- (WebSocketResponseMessage*) defaultInstance; - -- (BOOL) isInitialized; -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output; -- (WebSocketResponseMessageBuilder*) builder; -+ (WebSocketResponseMessageBuilder*) builder; -+ (WebSocketResponseMessageBuilder*) builderWithPrototype:(WebSocketResponseMessage*) prototype; -- (WebSocketResponseMessageBuilder*) toBuilder; - -+ (WebSocketResponseMessage*) parseFromData:(NSData*) data; -+ (WebSocketResponseMessage*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (WebSocketResponseMessage*) parseFromInputStream:(NSInputStream*) input; -+ (WebSocketResponseMessage*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (WebSocketResponseMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input; -+ (WebSocketResponseMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -@end - -@interface WebSocketResponseMessageBuilder : PBGeneratedMessageBuilder { -@private - WebSocketResponseMessage* result; -} - -- (WebSocketResponseMessage*) defaultInstance; - -- (WebSocketResponseMessageBuilder*) clear; -- (WebSocketResponseMessageBuilder*) clone; - -- (WebSocketResponseMessage*) build; -- (WebSocketResponseMessage*) buildPartial; - -- (WebSocketResponseMessageBuilder*) mergeFrom:(WebSocketResponseMessage*) other; -- (WebSocketResponseMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input; -- (WebSocketResponseMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; - -- (BOOL) hasId; -- (UInt64) id; -- (WebSocketResponseMessageBuilder*) setId:(UInt64) value; -- (WebSocketResponseMessageBuilder*) clearId; - -- (BOOL) hasStatus; -- (UInt32) status; -- (WebSocketResponseMessageBuilder*) setStatus:(UInt32) value; -- (WebSocketResponseMessageBuilder*) clearStatus; - -- (BOOL) hasMessage; -- (NSString*) message; -- (WebSocketResponseMessageBuilder*) setMessage:(NSString*) value; -- (WebSocketResponseMessageBuilder*) clearMessage; - -- (BOOL) hasBody; -- (NSData*) body; -- (WebSocketResponseMessageBuilder*) setBody:(NSData*) value; -- (WebSocketResponseMessageBuilder*) clearBody; -@end - -@interface WebSocketMessage : PBGeneratedMessage { -@private - BOOL hasRequest_:1; - BOOL hasResponse_:1; - BOOL hasType_:1; - WebSocketRequestMessage* request; - WebSocketResponseMessage* response; - WebSocketMessageType type; -} -- (BOOL) hasType; -- (BOOL) hasRequest; -- (BOOL) hasResponse; -@property (readonly) WebSocketMessageType type; -@property (readonly, strong) WebSocketRequestMessage* request; -@property (readonly, strong) WebSocketResponseMessage* response; - -+ (WebSocketMessage*) defaultInstance; -- (WebSocketMessage*) defaultInstance; - -- (BOOL) isInitialized; -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output; -- (WebSocketMessageBuilder*) builder; -+ (WebSocketMessageBuilder*) builder; -+ (WebSocketMessageBuilder*) builderWithPrototype:(WebSocketMessage*) prototype; -- (WebSocketMessageBuilder*) toBuilder; - -+ (WebSocketMessage*) parseFromData:(NSData*) data; -+ (WebSocketMessage*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (WebSocketMessage*) parseFromInputStream:(NSInputStream*) input; -+ (WebSocketMessage*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -+ (WebSocketMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input; -+ (WebSocketMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; -@end - -@interface WebSocketMessageBuilder : PBGeneratedMessageBuilder { -@private - WebSocketMessage* result; -} - -- (WebSocketMessage*) defaultInstance; - -- (WebSocketMessageBuilder*) clear; -- (WebSocketMessageBuilder*) clone; - -- (WebSocketMessage*) build; -- (WebSocketMessage*) buildPartial; - -- (WebSocketMessageBuilder*) mergeFrom:(WebSocketMessage*) other; -- (WebSocketMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input; -- (WebSocketMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; - -- (BOOL) hasType; -- (WebSocketMessageType) type; -- (WebSocketMessageBuilder*) setType:(WebSocketMessageType) value; -- (WebSocketMessageBuilder*) clearType; - -- (BOOL) hasRequest; -- (WebSocketRequestMessage*) request; -- (WebSocketMessageBuilder*) setRequest:(WebSocketRequestMessage*) value; -- (WebSocketMessageBuilder*) setRequestBuilder:(WebSocketRequestMessageBuilder*) builderForValue; -- (WebSocketMessageBuilder*) mergeRequest:(WebSocketRequestMessage*) value; -- (WebSocketMessageBuilder*) clearRequest; - -- (BOOL) hasResponse; -- (WebSocketResponseMessage*) response; -- (WebSocketMessageBuilder*) setResponse:(WebSocketResponseMessage*) value; -- (WebSocketMessageBuilder*) setResponseBuilder:(WebSocketResponseMessageBuilder*) builderForValue; -- (WebSocketMessageBuilder*) mergeResponse:(WebSocketResponseMessage*) value; -- (WebSocketMessageBuilder*) clearResponse; -@end - - -// @@protoc_insertion_point(global_scope) diff --git a/protobuf/WebSocketResources.pb.m b/protobuf/WebSocketResources.pb.m deleted file mode 100644 index 6171a58..0000000 --- a/protobuf/WebSocketResources.pb.m +++ /dev/null @@ -1,1051 +0,0 @@ -// Generated by the protocol buffer compiler. DO NOT EDIT! - -#import "WebSocketResources.pb.h" -// @@protoc_insertion_point(imports) - -@implementation WebSocketResourcesRoot -static PBExtensionRegistry* extensionRegistry = nil; -+ (PBExtensionRegistry*) extensionRegistry { - return extensionRegistry; -} - -+ (void) initialize { - if (self == [WebSocketResourcesRoot class]) { - PBMutableExtensionRegistry* registry = [PBMutableExtensionRegistry registry]; - [self registerAllExtensions:registry]; - extensionRegistry = registry; - } -} -+ (void) registerAllExtensions:(PBMutableExtensionRegistry*) registry { -} -@end - -@interface WebSocketRequestMessage () -@property (strong) NSString* verb; -@property (strong) NSString* path; -@property (strong) NSData* body; -@property UInt64 id; -@end - -@implementation WebSocketRequestMessage - -- (BOOL) hasVerb { - return !!hasVerb_; -} -- (void) setHasVerb:(BOOL) value_ { - hasVerb_ = !!value_; -} -@synthesize verb; -- (BOOL) hasPath { - return !!hasPath_; -} -- (void) setHasPath:(BOOL) value_ { - hasPath_ = !!value_; -} -@synthesize path; -- (BOOL) hasBody { - return !!hasBody_; -} -- (void) setHasBody:(BOOL) value_ { - hasBody_ = !!value_; -} -@synthesize body; -- (BOOL) hasId { - return !!hasId_; -} -- (void) setHasId:(BOOL) value_ { - hasId_ = !!value_; -} -@synthesize id; -- (id) init { - if ((self = [super init])) { - self.verb = @""; - self.path = @""; - self.body = [NSData data]; - self.id = 0L; - } - return self; -} -static WebSocketRequestMessage* defaultWebSocketRequestMessageInstance = nil; -+ (void) initialize { - if (self == [WebSocketRequestMessage class]) { - defaultWebSocketRequestMessageInstance = [[WebSocketRequestMessage alloc] init]; - } -} -+ (WebSocketRequestMessage*) defaultInstance { - return defaultWebSocketRequestMessageInstance; -} -- (WebSocketRequestMessage*) defaultInstance { - return defaultWebSocketRequestMessageInstance; -} -- (BOOL) isInitialized { - return YES; -} -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { - if (self.hasVerb) { - [output writeString:1 value:self.verb]; - } - if (self.hasPath) { - [output writeString:2 value:self.path]; - } - if (self.hasBody) { - [output writeData:3 value:self.body]; - } - if (self.hasId) { - [output writeUInt64:4 value:self.id]; - } - [self.unknownFields writeToCodedOutputStream:output]; -} -- (SInt32) serializedSize { - __block SInt32 size_ = memoizedSerializedSize; - if (size_ != -1) { - return size_; - } - - size_ = 0; - if (self.hasVerb) { - size_ += computeStringSize(1, self.verb); - } - if (self.hasPath) { - size_ += computeStringSize(2, self.path); - } - if (self.hasBody) { - size_ += computeDataSize(3, self.body); - } - if (self.hasId) { - size_ += computeUInt64Size(4, self.id); - } - size_ += self.unknownFields.serializedSize; - memoizedSerializedSize = size_; - return size_; -} -+ (WebSocketRequestMessage*) parseFromData:(NSData*) data { - return (WebSocketRequestMessage*)[[[WebSocketRequestMessage builder] mergeFromData:data] build]; -} -+ (WebSocketRequestMessage*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (WebSocketRequestMessage*)[[[WebSocketRequestMessage builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; -} -+ (WebSocketRequestMessage*) parseFromInputStream:(NSInputStream*) input { - return (WebSocketRequestMessage*)[[[WebSocketRequestMessage builder] mergeFromInputStream:input] build]; -} -+ (WebSocketRequestMessage*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (WebSocketRequestMessage*)[[[WebSocketRequestMessage builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (WebSocketRequestMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input { - return (WebSocketRequestMessage*)[[[WebSocketRequestMessage builder] mergeFromCodedInputStream:input] build]; -} -+ (WebSocketRequestMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (WebSocketRequestMessage*)[[[WebSocketRequestMessage builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (WebSocketRequestMessageBuilder*) builder { - return [[WebSocketRequestMessageBuilder alloc] init]; -} -+ (WebSocketRequestMessageBuilder*) builderWithPrototype:(WebSocketRequestMessage*) prototype { - return [[WebSocketRequestMessage builder] mergeFrom:prototype]; -} -- (WebSocketRequestMessageBuilder*) builder { - return [WebSocketRequestMessage builder]; -} -- (WebSocketRequestMessageBuilder*) toBuilder { - return [WebSocketRequestMessage builderWithPrototype:self]; -} -- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { - if (self.hasVerb) { - [output appendFormat:@"%@%@: %@\n", indent, @"verb", self.verb]; - } - if (self.hasPath) { - [output appendFormat:@"%@%@: %@\n", indent, @"path", self.path]; - } - if (self.hasBody) { - [output appendFormat:@"%@%@: %@\n", indent, @"body", self.body]; - } - if (self.hasId) { - [output appendFormat:@"%@%@: %@\n", indent, @"id", [NSNumber numberWithLongLong:self.id]]; - } - [self.unknownFields writeDescriptionTo:output withIndent:indent]; -} -- (BOOL) isEqual:(id)other { - if (other == self) { - return YES; - } - if (![other isKindOfClass:[WebSocketRequestMessage class]]) { - return NO; - } - WebSocketRequestMessage *otherMessage = other; - return - self.hasVerb == otherMessage.hasVerb && - (!self.hasVerb || [self.verb isEqual:otherMessage.verb]) && - self.hasPath == otherMessage.hasPath && - (!self.hasPath || [self.path isEqual:otherMessage.path]) && - self.hasBody == otherMessage.hasBody && - (!self.hasBody || [self.body isEqual:otherMessage.body]) && - self.hasId == otherMessage.hasId && - (!self.hasId || self.id == otherMessage.id) && - (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); -} -- (NSUInteger) hash { - __block NSUInteger hashCode = 7; - if (self.hasVerb) { - hashCode = hashCode * 31 + [self.verb hash]; - } - if (self.hasPath) { - hashCode = hashCode * 31 + [self.path hash]; - } - if (self.hasBody) { - hashCode = hashCode * 31 + [self.body hash]; - } - if (self.hasId) { - hashCode = hashCode * 31 + [[NSNumber numberWithLongLong:self.id] hash]; - } - hashCode = hashCode * 31 + [self.unknownFields hash]; - return hashCode; -} -@end - -@interface WebSocketRequestMessageBuilder() -@property (strong) WebSocketRequestMessage* result; -@end - -@implementation WebSocketRequestMessageBuilder -@synthesize result; -- (id) init { - if ((self = [super init])) { - self.result = [[WebSocketRequestMessage alloc] init]; - } - return self; -} -- (PBGeneratedMessage*) internalGetResult { - return result; -} -- (WebSocketRequestMessageBuilder*) clear { - self.result = [[WebSocketRequestMessage alloc] init]; - return self; -} -- (WebSocketRequestMessageBuilder*) clone { - return [WebSocketRequestMessage builderWithPrototype:result]; -} -- (WebSocketRequestMessage*) defaultInstance { - return [WebSocketRequestMessage defaultInstance]; -} -- (WebSocketRequestMessage*) build { - [self checkInitialized]; - return [self buildPartial]; -} -- (WebSocketRequestMessage*) buildPartial { - WebSocketRequestMessage* returnMe = result; - self.result = nil; - return returnMe; -} -- (WebSocketRequestMessageBuilder*) mergeFrom:(WebSocketRequestMessage*) other { - if (other == [WebSocketRequestMessage defaultInstance]) { - return self; - } - if (other.hasVerb) { - [self setVerb:other.verb]; - } - if (other.hasPath) { - [self setPath:other.path]; - } - if (other.hasBody) { - [self setBody:other.body]; - } - if (other.hasId) { - [self setId:other.id]; - } - [self mergeUnknownFields:other.unknownFields]; - return self; -} -- (WebSocketRequestMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { - return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; -} -- (WebSocketRequestMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; - while (YES) { - SInt32 tag = [input readTag]; - switch (tag) { - case 0: - [self setUnknownFields:[unknownFields build]]; - return self; - default: { - if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) { - [self setUnknownFields:[unknownFields build]]; - return self; - } - break; - } - case 10: { - [self setVerb:[input readString]]; - break; - } - case 18: { - [self setPath:[input readString]]; - break; - } - case 26: { - [self setBody:[input readData]]; - break; - } - case 32: { - [self setId:[input readUInt64]]; - break; - } - } - } -} -- (BOOL) hasVerb { - return result.hasVerb; -} -- (NSString*) verb { - return result.verb; -} -- (WebSocketRequestMessageBuilder*) setVerb:(NSString*) value { - result.hasVerb = YES; - result.verb = value; - return self; -} -- (WebSocketRequestMessageBuilder*) clearVerb { - result.hasVerb = NO; - result.verb = @""; - return self; -} -- (BOOL) hasPath { - return result.hasPath; -} -- (NSString*) path { - return result.path; -} -- (WebSocketRequestMessageBuilder*) setPath:(NSString*) value { - result.hasPath = YES; - result.path = value; - return self; -} -- (WebSocketRequestMessageBuilder*) clearPath { - result.hasPath = NO; - result.path = @""; - return self; -} -- (BOOL) hasBody { - return result.hasBody; -} -- (NSData*) body { - return result.body; -} -- (WebSocketRequestMessageBuilder*) setBody:(NSData*) value { - result.hasBody = YES; - result.body = value; - return self; -} -- (WebSocketRequestMessageBuilder*) clearBody { - result.hasBody = NO; - result.body = [NSData data]; - return self; -} -- (BOOL) hasId { - return result.hasId; -} -- (UInt64) id { - return result.id; -} -- (WebSocketRequestMessageBuilder*) setId:(UInt64) value { - result.hasId = YES; - result.id = value; - return self; -} -- (WebSocketRequestMessageBuilder*) clearId { - result.hasId = NO; - result.id = 0L; - return self; -} -@end - -@interface WebSocketResponseMessage () -@property UInt64 id; -@property UInt32 status; -@property (strong) NSString* message; -@property (strong) NSData* body; -@end - -@implementation WebSocketResponseMessage - -- (BOOL) hasId { - return !!hasId_; -} -- (void) setHasId:(BOOL) value_ { - hasId_ = !!value_; -} -@synthesize id; -- (BOOL) hasStatus { - return !!hasStatus_; -} -- (void) setHasStatus:(BOOL) value_ { - hasStatus_ = !!value_; -} -@synthesize status; -- (BOOL) hasMessage { - return !!hasMessage_; -} -- (void) setHasMessage:(BOOL) value_ { - hasMessage_ = !!value_; -} -@synthesize message; -- (BOOL) hasBody { - return !!hasBody_; -} -- (void) setHasBody:(BOOL) value_ { - hasBody_ = !!value_; -} -@synthesize body; -- (id) init { - if ((self = [super init])) { - self.id = 0L; - self.status = 0; - self.message = @""; - self.body = [NSData data]; - } - return self; -} -static WebSocketResponseMessage* defaultWebSocketResponseMessageInstance = nil; -+ (void) initialize { - if (self == [WebSocketResponseMessage class]) { - defaultWebSocketResponseMessageInstance = [[WebSocketResponseMessage alloc] init]; - } -} -+ (WebSocketResponseMessage*) defaultInstance { - return defaultWebSocketResponseMessageInstance; -} -- (WebSocketResponseMessage*) defaultInstance { - return defaultWebSocketResponseMessageInstance; -} -- (BOOL) isInitialized { - return YES; -} -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { - if (self.hasId) { - [output writeUInt64:1 value:self.id]; - } - if (self.hasStatus) { - [output writeUInt32:2 value:self.status]; - } - if (self.hasMessage) { - [output writeString:3 value:self.message]; - } - if (self.hasBody) { - [output writeData:4 value:self.body]; - } - [self.unknownFields writeToCodedOutputStream:output]; -} -- (SInt32) serializedSize { - __block SInt32 size_ = memoizedSerializedSize; - if (size_ != -1) { - return size_; - } - - size_ = 0; - if (self.hasId) { - size_ += computeUInt64Size(1, self.id); - } - if (self.hasStatus) { - size_ += computeUInt32Size(2, self.status); - } - if (self.hasMessage) { - size_ += computeStringSize(3, self.message); - } - if (self.hasBody) { - size_ += computeDataSize(4, self.body); - } - size_ += self.unknownFields.serializedSize; - memoizedSerializedSize = size_; - return size_; -} -+ (WebSocketResponseMessage*) parseFromData:(NSData*) data { - return (WebSocketResponseMessage*)[[[WebSocketResponseMessage builder] mergeFromData:data] build]; -} -+ (WebSocketResponseMessage*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (WebSocketResponseMessage*)[[[WebSocketResponseMessage builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; -} -+ (WebSocketResponseMessage*) parseFromInputStream:(NSInputStream*) input { - return (WebSocketResponseMessage*)[[[WebSocketResponseMessage builder] mergeFromInputStream:input] build]; -} -+ (WebSocketResponseMessage*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (WebSocketResponseMessage*)[[[WebSocketResponseMessage builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (WebSocketResponseMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input { - return (WebSocketResponseMessage*)[[[WebSocketResponseMessage builder] mergeFromCodedInputStream:input] build]; -} -+ (WebSocketResponseMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (WebSocketResponseMessage*)[[[WebSocketResponseMessage builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (WebSocketResponseMessageBuilder*) builder { - return [[WebSocketResponseMessageBuilder alloc] init]; -} -+ (WebSocketResponseMessageBuilder*) builderWithPrototype:(WebSocketResponseMessage*) prototype { - return [[WebSocketResponseMessage builder] mergeFrom:prototype]; -} -- (WebSocketResponseMessageBuilder*) builder { - return [WebSocketResponseMessage builder]; -} -- (WebSocketResponseMessageBuilder*) toBuilder { - return [WebSocketResponseMessage builderWithPrototype:self]; -} -- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { - if (self.hasId) { - [output appendFormat:@"%@%@: %@\n", indent, @"id", [NSNumber numberWithLongLong:self.id]]; - } - if (self.hasStatus) { - [output appendFormat:@"%@%@: %@\n", indent, @"status", [NSNumber numberWithInteger:self.status]]; - } - if (self.hasMessage) { - [output appendFormat:@"%@%@: %@\n", indent, @"message", self.message]; - } - if (self.hasBody) { - [output appendFormat:@"%@%@: %@\n", indent, @"body", self.body]; - } - [self.unknownFields writeDescriptionTo:output withIndent:indent]; -} -- (BOOL) isEqual:(id)other { - if (other == self) { - return YES; - } - if (![other isKindOfClass:[WebSocketResponseMessage class]]) { - return NO; - } - WebSocketResponseMessage *otherMessage = other; - return - self.hasId == otherMessage.hasId && - (!self.hasId || self.id == otherMessage.id) && - self.hasStatus == otherMessage.hasStatus && - (!self.hasStatus || self.status == otherMessage.status) && - self.hasMessage == otherMessage.hasMessage && - (!self.hasMessage || [self.message isEqual:otherMessage.message]) && - self.hasBody == otherMessage.hasBody && - (!self.hasBody || [self.body isEqual:otherMessage.body]) && - (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); -} -- (NSUInteger) hash { - __block NSUInteger hashCode = 7; - if (self.hasId) { - hashCode = hashCode * 31 + [[NSNumber numberWithLongLong:self.id] hash]; - } - if (self.hasStatus) { - hashCode = hashCode * 31 + [[NSNumber numberWithInteger:self.status] hash]; - } - if (self.hasMessage) { - hashCode = hashCode * 31 + [self.message hash]; - } - if (self.hasBody) { - hashCode = hashCode * 31 + [self.body hash]; - } - hashCode = hashCode * 31 + [self.unknownFields hash]; - return hashCode; -} -@end - -@interface WebSocketResponseMessageBuilder() -@property (strong) WebSocketResponseMessage* result; -@end - -@implementation WebSocketResponseMessageBuilder -@synthesize result; -- (id) init { - if ((self = [super init])) { - self.result = [[WebSocketResponseMessage alloc] init]; - } - return self; -} -- (PBGeneratedMessage*) internalGetResult { - return result; -} -- (WebSocketResponseMessageBuilder*) clear { - self.result = [[WebSocketResponseMessage alloc] init]; - return self; -} -- (WebSocketResponseMessageBuilder*) clone { - return [WebSocketResponseMessage builderWithPrototype:result]; -} -- (WebSocketResponseMessage*) defaultInstance { - return [WebSocketResponseMessage defaultInstance]; -} -- (WebSocketResponseMessage*) build { - [self checkInitialized]; - return [self buildPartial]; -} -- (WebSocketResponseMessage*) buildPartial { - WebSocketResponseMessage* returnMe = result; - self.result = nil; - return returnMe; -} -- (WebSocketResponseMessageBuilder*) mergeFrom:(WebSocketResponseMessage*) other { - if (other == [WebSocketResponseMessage defaultInstance]) { - return self; - } - if (other.hasId) { - [self setId:other.id]; - } - if (other.hasStatus) { - [self setStatus:other.status]; - } - if (other.hasMessage) { - [self setMessage:other.message]; - } - if (other.hasBody) { - [self setBody:other.body]; - } - [self mergeUnknownFields:other.unknownFields]; - return self; -} -- (WebSocketResponseMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { - return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; -} -- (WebSocketResponseMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; - while (YES) { - SInt32 tag = [input readTag]; - switch (tag) { - case 0: - [self setUnknownFields:[unknownFields build]]; - return self; - default: { - if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) { - [self setUnknownFields:[unknownFields build]]; - return self; - } - break; - } - case 8: { - [self setId:[input readUInt64]]; - break; - } - case 16: { - [self setStatus:[input readUInt32]]; - break; - } - case 26: { - [self setMessage:[input readString]]; - break; - } - case 34: { - [self setBody:[input readData]]; - break; - } - } - } -} -- (BOOL) hasId { - return result.hasId; -} -- (UInt64) id { - return result.id; -} -- (WebSocketResponseMessageBuilder*) setId:(UInt64) value { - result.hasId = YES; - result.id = value; - return self; -} -- (WebSocketResponseMessageBuilder*) clearId { - result.hasId = NO; - result.id = 0L; - return self; -} -- (BOOL) hasStatus { - return result.hasStatus; -} -- (UInt32) status { - return result.status; -} -- (WebSocketResponseMessageBuilder*) setStatus:(UInt32) value { - result.hasStatus = YES; - result.status = value; - return self; -} -- (WebSocketResponseMessageBuilder*) clearStatus { - result.hasStatus = NO; - result.status = 0; - return self; -} -- (BOOL) hasMessage { - return result.hasMessage; -} -- (NSString*) message { - return result.message; -} -- (WebSocketResponseMessageBuilder*) setMessage:(NSString*) value { - result.hasMessage = YES; - result.message = value; - return self; -} -- (WebSocketResponseMessageBuilder*) clearMessage { - result.hasMessage = NO; - result.message = @""; - return self; -} -- (BOOL) hasBody { - return result.hasBody; -} -- (NSData*) body { - return result.body; -} -- (WebSocketResponseMessageBuilder*) setBody:(NSData*) value { - result.hasBody = YES; - result.body = value; - return self; -} -- (WebSocketResponseMessageBuilder*) clearBody { - result.hasBody = NO; - result.body = [NSData data]; - return self; -} -@end - -@interface WebSocketMessage () -@property WebSocketMessageType type; -@property (strong) WebSocketRequestMessage* request; -@property (strong) WebSocketResponseMessage* response; -@end - -@implementation WebSocketMessage - -- (BOOL) hasType { - return !!hasType_; -} -- (void) setHasType:(BOOL) value_ { - hasType_ = !!value_; -} -@synthesize type; -- (BOOL) hasRequest { - return !!hasRequest_; -} -- (void) setHasRequest:(BOOL) value_ { - hasRequest_ = !!value_; -} -@synthesize request; -- (BOOL) hasResponse { - return !!hasResponse_; -} -- (void) setHasResponse:(BOOL) value_ { - hasResponse_ = !!value_; -} -@synthesize response; -- (id) init { - if ((self = [super init])) { - self.type = WebSocketMessageTypeUnknown; - self.request = [WebSocketRequestMessage defaultInstance]; - self.response = [WebSocketResponseMessage defaultInstance]; - } - return self; -} -static WebSocketMessage* defaultWebSocketMessageInstance = nil; -+ (void) initialize { - if (self == [WebSocketMessage class]) { - defaultWebSocketMessageInstance = [[WebSocketMessage alloc] init]; - } -} -+ (WebSocketMessage*) defaultInstance { - return defaultWebSocketMessageInstance; -} -- (WebSocketMessage*) defaultInstance { - return defaultWebSocketMessageInstance; -} -- (BOOL) isInitialized { - return YES; -} -- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { - if (self.hasType) { - [output writeEnum:1 value:self.type]; - } - if (self.hasRequest) { - [output writeMessage:2 value:self.request]; - } - if (self.hasResponse) { - [output writeMessage:3 value:self.response]; - } - [self.unknownFields writeToCodedOutputStream:output]; -} -- (SInt32) serializedSize { - __block SInt32 size_ = memoizedSerializedSize; - if (size_ != -1) { - return size_; - } - - size_ = 0; - if (self.hasType) { - size_ += computeEnumSize(1, self.type); - } - if (self.hasRequest) { - size_ += computeMessageSize(2, self.request); - } - if (self.hasResponse) { - size_ += computeMessageSize(3, self.response); - } - size_ += self.unknownFields.serializedSize; - memoizedSerializedSize = size_; - return size_; -} -+ (WebSocketMessage*) parseFromData:(NSData*) data { - return (WebSocketMessage*)[[[WebSocketMessage builder] mergeFromData:data] build]; -} -+ (WebSocketMessage*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (WebSocketMessage*)[[[WebSocketMessage builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; -} -+ (WebSocketMessage*) parseFromInputStream:(NSInputStream*) input { - return (WebSocketMessage*)[[[WebSocketMessage builder] mergeFromInputStream:input] build]; -} -+ (WebSocketMessage*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (WebSocketMessage*)[[[WebSocketMessage builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (WebSocketMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input { - return (WebSocketMessage*)[[[WebSocketMessage builder] mergeFromCodedInputStream:input] build]; -} -+ (WebSocketMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - return (WebSocketMessage*)[[[WebSocketMessage builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (WebSocketMessageBuilder*) builder { - return [[WebSocketMessageBuilder alloc] init]; -} -+ (WebSocketMessageBuilder*) builderWithPrototype:(WebSocketMessage*) prototype { - return [[WebSocketMessage builder] mergeFrom:prototype]; -} -- (WebSocketMessageBuilder*) builder { - return [WebSocketMessage builder]; -} -- (WebSocketMessageBuilder*) toBuilder { - return [WebSocketMessage builderWithPrototype:self]; -} -- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { - if (self.hasType) { - [output appendFormat:@"%@%@: %d\n", indent, @"type", self.type]; - } - if (self.hasRequest) { - [output appendFormat:@"%@%@ {\n", indent, @"request"]; - [self.request writeDescriptionTo:output - withIndent:[NSString stringWithFormat:@"%@ ", indent]]; - [output appendFormat:@"%@}\n", indent]; - } - if (self.hasResponse) { - [output appendFormat:@"%@%@ {\n", indent, @"response"]; - [self.response writeDescriptionTo:output - withIndent:[NSString stringWithFormat:@"%@ ", indent]]; - [output appendFormat:@"%@}\n", indent]; - } - [self.unknownFields writeDescriptionTo:output withIndent:indent]; -} -- (BOOL) isEqual:(id)other { - if (other == self) { - return YES; - } - if (![other isKindOfClass:[WebSocketMessage class]]) { - return NO; - } - WebSocketMessage *otherMessage = other; - return - self.hasType == otherMessage.hasType && - (!self.hasType || self.type == otherMessage.type) && - self.hasRequest == otherMessage.hasRequest && - (!self.hasRequest || [self.request isEqual:otherMessage.request]) && - self.hasResponse == otherMessage.hasResponse && - (!self.hasResponse || [self.response isEqual:otherMessage.response]) && - (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); -} -- (NSUInteger) hash { - __block NSUInteger hashCode = 7; - if (self.hasType) { - hashCode = hashCode * 31 + self.type; - } - if (self.hasRequest) { - hashCode = hashCode * 31 + [self.request hash]; - } - if (self.hasResponse) { - hashCode = hashCode * 31 + [self.response hash]; - } - hashCode = hashCode * 31 + [self.unknownFields hash]; - return hashCode; -} -@end - -BOOL WebSocketMessageTypeIsValidValue(WebSocketMessageType value) { - switch (value) { - case WebSocketMessageTypeUnknown: - case WebSocketMessageTypeRequest: - case WebSocketMessageTypeResponse: - return YES; - default: - return NO; - } -} -@interface WebSocketMessageBuilder() -@property (strong) WebSocketMessage* result; -@end - -@implementation WebSocketMessageBuilder -@synthesize result; -- (id) init { - if ((self = [super init])) { - self.result = [[WebSocketMessage alloc] init]; - } - return self; -} -- (PBGeneratedMessage*) internalGetResult { - return result; -} -- (WebSocketMessageBuilder*) clear { - self.result = [[WebSocketMessage alloc] init]; - return self; -} -- (WebSocketMessageBuilder*) clone { - return [WebSocketMessage builderWithPrototype:result]; -} -- (WebSocketMessage*) defaultInstance { - return [WebSocketMessage defaultInstance]; -} -- (WebSocketMessage*) build { - [self checkInitialized]; - return [self buildPartial]; -} -- (WebSocketMessage*) buildPartial { - WebSocketMessage* returnMe = result; - self.result = nil; - return returnMe; -} -- (WebSocketMessageBuilder*) mergeFrom:(WebSocketMessage*) other { - if (other == [WebSocketMessage defaultInstance]) { - return self; - } - if (other.hasType) { - [self setType:other.type]; - } - if (other.hasRequest) { - [self mergeRequest:other.request]; - } - if (other.hasResponse) { - [self mergeResponse:other.response]; - } - [self mergeUnknownFields:other.unknownFields]; - return self; -} -- (WebSocketMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { - return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; -} -- (WebSocketMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { - PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; - while (YES) { - SInt32 tag = [input readTag]; - switch (tag) { - case 0: - [self setUnknownFields:[unknownFields build]]; - return self; - default: { - if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) { - [self setUnknownFields:[unknownFields build]]; - return self; - } - break; - } - case 8: { - WebSocketMessageType value = (WebSocketMessageType)[input readEnum]; - if (WebSocketMessageTypeIsValidValue(value)) { - [self setType:value]; - } else { - [unknownFields mergeVarintField:1 value:value]; - } - break; - } - case 18: { - WebSocketRequestMessageBuilder* subBuilder = [WebSocketRequestMessage builder]; - if (self.hasRequest) { - [subBuilder mergeFrom:self.request]; - } - [input readMessage:subBuilder extensionRegistry:extensionRegistry]; - [self setRequest:[subBuilder buildPartial]]; - break; - } - case 26: { - WebSocketResponseMessageBuilder* subBuilder = [WebSocketResponseMessage builder]; - if (self.hasResponse) { - [subBuilder mergeFrom:self.response]; - } - [input readMessage:subBuilder extensionRegistry:extensionRegistry]; - [self setResponse:[subBuilder buildPartial]]; - break; - } - } - } -} -- (BOOL) hasType { - return result.hasType; -} -- (WebSocketMessageType) type { - return result.type; -} -- (WebSocketMessageBuilder*) setType:(WebSocketMessageType) value { - result.hasType = YES; - result.type = value; - return self; -} -- (WebSocketMessageBuilder*) clearType { - result.hasType = NO; - result.type = WebSocketMessageTypeUnknown; - return self; -} -- (BOOL) hasRequest { - return result.hasRequest; -} -- (WebSocketRequestMessage*) request { - return result.request; -} -- (WebSocketMessageBuilder*) setRequest:(WebSocketRequestMessage*) value { - result.hasRequest = YES; - result.request = value; - return self; -} -- (WebSocketMessageBuilder*) setRequestBuilder:(WebSocketRequestMessageBuilder*) builderForValue { - return [self setRequest:[builderForValue build]]; -} -- (WebSocketMessageBuilder*) mergeRequest:(WebSocketRequestMessage*) value { - if (result.hasRequest && - result.request != [WebSocketRequestMessage defaultInstance]) { - result.request = - [[[WebSocketRequestMessage builderWithPrototype:result.request] mergeFrom:value] buildPartial]; - } else { - result.request = value; - } - result.hasRequest = YES; - return self; -} -- (WebSocketMessageBuilder*) clearRequest { - result.hasRequest = NO; - result.request = [WebSocketRequestMessage defaultInstance]; - return self; -} -- (BOOL) hasResponse { - return result.hasResponse; -} -- (WebSocketResponseMessage*) response { - return result.response; -} -- (WebSocketMessageBuilder*) setResponse:(WebSocketResponseMessage*) value { - result.hasResponse = YES; - result.response = value; - return self; -} -- (WebSocketMessageBuilder*) setResponseBuilder:(WebSocketResponseMessageBuilder*) builderForValue { - return [self setResponse:[builderForValue build]]; -} -- (WebSocketMessageBuilder*) mergeResponse:(WebSocketResponseMessage*) value { - if (result.hasResponse && - result.response != [WebSocketResponseMessage defaultInstance]) { - result.response = - [[[WebSocketResponseMessage builderWithPrototype:result.response] mergeFrom:value] buildPartial]; - } else { - result.response = value; - } - result.hasResponse = YES; - return self; -} -- (WebSocketMessageBuilder*) clearResponse { - result.hasResponse = NO; - result.response = [WebSocketResponseMessage defaultInstance]; - return self; -} -@end - - -// @@protoc_insertion_point(global_scope) diff --git a/protobuf/WebSocketResources.proto b/protobuf/WebSocketResources.proto deleted file mode 100644 index 35943a7..0000000 --- a/protobuf/WebSocketResources.proto +++ /dev/null @@ -1,46 +0,0 @@ -/** - * Copyright (C) 2014-2015 Open WhisperSystems - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ -package textsecure; - -option java_package = "org.whispersystems.textsecure.internal.websocket"; -option java_outer_classname = "WebSocketProtos"; - -message WebSocketRequestMessage { - optional string verb = 1; - optional string path = 2; - optional bytes body = 3; - optional uint64 id = 4; -} - -message WebSocketResponseMessage { - optional uint64 id = 1; - optional uint32 status = 2; - optional string message = 3; - optional bytes body = 4; -} - -message WebSocketMessage { - enum Type { - UNKNOWN = 0; - REQUEST = 1; - RESPONSE = 2; - } - - optional Type type = 1; - optional WebSocketRequestMessage request = 2; - optional WebSocketResponseMessage response = 3; -} \ No newline at end of file diff --git a/src/Contacts/TSThread.h b/src/Contacts/TSThread.h index c9c97cf..4d5e8fa 100644 --- a/src/Contacts/TSThread.h +++ b/src/Contacts/TSThread.h @@ -5,6 +5,7 @@ #import @class TSInteraction; +@class TSInvalidIdentityKeyReceivingErrorMessage; /** * TSThread is the superclass of TSContactThread and TSGroupThread @@ -42,6 +43,11 @@ */ - (NSUInteger)numberOfInteractions; +/** + * Get all messages in the thread we weren't able to decrypt + */ +- (NSArray *)receivedMessagesForInvalidKey:(NSData *)key; + /** * Returns whether or not the thread has unread messages. * diff --git a/src/Contacts/TSThread.m b/src/Contacts/TSThread.m index 0e0960d..dc246b9 100644 --- a/src/Contacts/TSThread.m +++ b/src/Contacts/TSThread.m @@ -5,6 +5,7 @@ #import "TSDatabaseView.h" #import "TSIncomingMessage.h" #import "TSInteraction.h" +#import "TSInvalidIdentityKeyReceivingErrorMessage.h" #import "TSOutgoingMessage.h" #import "TSStorageManager.h" @@ -105,6 +106,37 @@ [interactionsByThread enumerateRowsInGroup:self.uniqueId usingBlock:interactionBlock]; } +/** + * Enumerates all the threads interactions. Note this will explode if you try to create a transaction in the block. + * If you need a transaction, use the sister method: `enumerateInteractionsWithTransaction:usingBlock` + */ +- (void)enumerateInteractionsUsingBlock:(void (^)(TSInteraction *interaction))block +{ + [self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { + [self enumerateInteractionsWithTransaction:transaction + usingBlock:^( + TSInteraction *interaction, YapDatabaseReadTransaction *transaction) { + + block(interaction); + }]; + }]; +} + +- (NSArray *)receivedMessagesForInvalidKey:(NSData *)key +{ + NSMutableArray *errorMessages = [NSMutableArray new]; + [self enumerateInteractionsUsingBlock:^(TSInteraction *interaction) { + if ([interaction isKindOfClass:[TSInvalidIdentityKeyReceivingErrorMessage class]]) { + TSInvalidIdentityKeyReceivingErrorMessage *error = (TSInvalidIdentityKeyReceivingErrorMessage *)interaction; + if ([[error newIdentityKey] isEqualToData:key]) { + [errorMessages addObject:(TSInvalidIdentityKeyReceivingErrorMessage *)interaction]; + } + } + }]; + + return [errorMessages copy]; +} + - (NSUInteger)numberOfInteractions { __block NSUInteger count; diff --git a/src/Contacts/Threads/TSContactThread.h b/src/Contacts/Threads/TSContactThread.h index aa93e01..bb78c08 100644 --- a/src/Contacts/Threads/TSContactThread.h +++ b/src/Contacts/Threads/TSContactThread.h @@ -11,15 +11,16 @@ #import "SignalRecipient.h" #import "TSThread.h" -@class IncomingPushMessageSignal; +@class OWSSignalServiceProtosEnvelope; @interface TSContactThread : TSThread + (instancetype)getOrCreateThreadWithContactId:(NSString *)contactId transaction:(YapDatabaseReadWriteTransaction *)transaction; + + (instancetype)getOrCreateThreadWithContactId:(NSString *)contactId transaction:(YapDatabaseReadWriteTransaction *)transaction - pushSignal:(IncomingPushMessageSignal *)pushSignal; + envelope:(OWSSignalServiceProtosEnvelope *)envelope; - (NSString *)contactIdentifier; diff --git a/src/Contacts/Threads/TSContactThread.m b/src/Contacts/Threads/TSContactThread.m index 455ce8f..80c7ba2 100644 --- a/src/Contacts/Threads/TSContactThread.m +++ b/src/Contacts/Threads/TSContactThread.m @@ -3,7 +3,7 @@ #import "TSContactThread.h" #import "ContactsUpdater.h" -#import "IncomingPushMessageSignal.pb.h" +#import "OWSSignalServiceProtos.pb.h" #import "TextSecureKitEnv.h" #import @@ -21,12 +21,13 @@ + (instancetype)getOrCreateThreadWithContactId:(NSString *)contactId transaction:(YapDatabaseReadWriteTransaction *)transaction - pushSignal:(IncomingPushMessageSignal *)pushSignal { + envelope:(OWSSignalServiceProtosEnvelope *)envelope +{ SignalRecipient *recipient = [SignalRecipient recipientWithTextSecureIdentifier:contactId withTransaction:transaction]; if (!recipient) { - NSString *relay = pushSignal.hasRelay && ![pushSignal.relay isEqualToString:@""] ? pushSignal.relay : nil; + NSString *relay = envelope.hasRelay && ![envelope.relay isEqualToString:@""] ? envelope.relay : nil; recipient = [[SignalRecipient alloc] initWithTextSecureIdentifier:contactId relay:relay supportsVoice:YES]; [[ContactsUpdater sharedUpdater] lookupIdentifier:contactId diff --git a/src/Messages/IncomingPushMessageSignal.pb.h b/src/Messages/IncomingPushMessageSignal.pb.h deleted file mode 100644 index e12275a..0000000 --- a/src/Messages/IncomingPushMessageSignal.pb.h +++ /dev/null @@ -1,402 +0,0 @@ -// Generated by the protocol buffer compiler. DO NOT EDIT! - -#import - -// @@protoc_insertion_point(imports) - -@class IncomingPushMessageSignal; -@class IncomingPushMessageSignalBuilder; -@class PushMessageContent; -@class PushMessageContentAttachmentPointer; -@class PushMessageContentAttachmentPointerBuilder; -@class PushMessageContentBuilder; -@class PushMessageContentGroupContext; -@class PushMessageContentGroupContextBuilder; -#ifndef __has_feature -#define __has_feature(x) 0 // Compatibility with non-clang compilers. -#endif // __has_feature - -#ifndef NS_RETURNS_NOT_RETAINED -#if __has_feature(attribute_ns_returns_not_retained) -#define NS_RETURNS_NOT_RETAINED __attribute__((ns_returns_not_retained)) -#else -#define NS_RETURNS_NOT_RETAINED -#endif -#endif - -typedef enum { - IncomingPushMessageSignalTypeUnknown = 0, - IncomingPushMessageSignalTypeCiphertext = 1, - IncomingPushMessageSignalTypeKeyExchange = 2, - IncomingPushMessageSignalTypePrekeyBundle = 3, - IncomingPushMessageSignalTypePlaintext = 4, - IncomingPushMessageSignalTypeReceipt = 5, -} IncomingPushMessageSignalType; - -BOOL IncomingPushMessageSignalTypeIsValidValue(IncomingPushMessageSignalType value); - -typedef enum { - PushMessageContentFlagsEndSession = 1, -} PushMessageContentFlags; - -BOOL PushMessageContentFlagsIsValidValue(PushMessageContentFlags value); - -typedef enum { - PushMessageContentGroupContextTypeUnknown = 0, - PushMessageContentGroupContextTypeUpdate = 1, - PushMessageContentGroupContextTypeDeliver = 2, - PushMessageContentGroupContextTypeQuit = 3, -} PushMessageContentGroupContextType; - -BOOL PushMessageContentGroupContextTypeIsValidValue(PushMessageContentGroupContextType value); - - -@interface IncomingPushMessageSignalRoot : NSObject { -} -+ (PBExtensionRegistry *)extensionRegistry; -+ (void)registerAllExtensions:(PBMutableExtensionRegistry *)registry; -@end - -@interface IncomingPushMessageSignal : PBGeneratedMessage { - @private - BOOL hasTimestamp_ : 1; - BOOL hasSource_ : 1; - BOOL hasRelay_ : 1; - BOOL hasMessage_ : 1; - BOOL hasSourceDevice_ : 1; - BOOL hasType_ : 1; - UInt64 timestamp; - NSString *source; - NSString *relay; - NSData *message; - UInt32 sourceDevice; - IncomingPushMessageSignalType type; -} -- (BOOL)hasType; -- (BOOL)hasSource; -- (BOOL)hasSourceDevice; -- (BOOL)hasRelay; -- (BOOL)hasTimestamp; -- (BOOL)hasMessage; -@property (readonly) IncomingPushMessageSignalType type; -@property (readonly, strong) NSString *source; -@property (readonly) UInt32 sourceDevice; -@property (readonly, strong) NSString *relay; -@property (readonly) UInt64 timestamp; -@property (readonly, strong) NSData *message; - -+ (IncomingPushMessageSignal *)defaultInstance; -- (IncomingPushMessageSignal *)defaultInstance; - -- (BOOL)isInitialized; -- (void)writeToCodedOutputStream:(PBCodedOutputStream *)output; -- (IncomingPushMessageSignalBuilder *)builder; -+ (IncomingPushMessageSignalBuilder *)builder; -+ (IncomingPushMessageSignalBuilder *)builderWithPrototype:(IncomingPushMessageSignal *)prototype; -- (IncomingPushMessageSignalBuilder *)toBuilder; - -+ (IncomingPushMessageSignal *)parseFromData:(NSData *)data; -+ (IncomingPushMessageSignal *)parseFromData:(NSData *)data extensionRegistry:(PBExtensionRegistry *)extensionRegistry; -+ (IncomingPushMessageSignal *)parseFromInputStream:(NSInputStream *)input; -+ (IncomingPushMessageSignal *)parseFromInputStream:(NSInputStream *)input - extensionRegistry:(PBExtensionRegistry *)extensionRegistry; -+ (IncomingPushMessageSignal *)parseFromCodedInputStream:(PBCodedInputStream *)input; -+ (IncomingPushMessageSignal *)parseFromCodedInputStream:(PBCodedInputStream *)input - extensionRegistry:(PBExtensionRegistry *)extensionRegistry; -@end - -@interface IncomingPushMessageSignalBuilder : PBGeneratedMessageBuilder { - @private - IncomingPushMessageSignal *result; -} - -- (IncomingPushMessageSignal *)defaultInstance; - -- (IncomingPushMessageSignalBuilder *)clear; -- (IncomingPushMessageSignalBuilder *)clone; - -- (IncomingPushMessageSignal *)build; -- (IncomingPushMessageSignal *)buildPartial; - -- (IncomingPushMessageSignalBuilder *)mergeFrom:(IncomingPushMessageSignal *)other; -- (IncomingPushMessageSignalBuilder *)mergeFromCodedInputStream:(PBCodedInputStream *)input; -- (IncomingPushMessageSignalBuilder *)mergeFromCodedInputStream:(PBCodedInputStream *)input - extensionRegistry:(PBExtensionRegistry *)extensionRegistry; - -- (BOOL)hasType; -- (IncomingPushMessageSignalType)type; -- (IncomingPushMessageSignalBuilder *)setType:(IncomingPushMessageSignalType)value; -- (IncomingPushMessageSignalBuilder *)clearType; - -- (BOOL)hasSource; -- (NSString *)source; -- (IncomingPushMessageSignalBuilder *)setSource:(NSString *)value; -- (IncomingPushMessageSignalBuilder *)clearSource; - -- (BOOL)hasSourceDevice; -- (UInt32)sourceDevice; -- (IncomingPushMessageSignalBuilder *)setSourceDevice:(UInt32)value; -- (IncomingPushMessageSignalBuilder *)clearSourceDevice; - -- (BOOL)hasRelay; -- (NSString *)relay; -- (IncomingPushMessageSignalBuilder *)setRelay:(NSString *)value; -- (IncomingPushMessageSignalBuilder *)clearRelay; - -- (BOOL)hasTimestamp; -- (UInt64)timestamp; -- (IncomingPushMessageSignalBuilder *)setTimestamp:(UInt64)value; -- (IncomingPushMessageSignalBuilder *)clearTimestamp; - -- (BOOL)hasMessage; -- (NSData *)message; -- (IncomingPushMessageSignalBuilder *)setMessage:(NSData *)value; -- (IncomingPushMessageSignalBuilder *)clearMessage; -@end - -@interface PushMessageContent : PBGeneratedMessage { - @private - BOOL hasBody_ : 1; - BOOL hasGroup_ : 1; - BOOL hasFlags_ : 1; - NSString *body; - PushMessageContentGroupContext *group; - UInt32 flags; - NSMutableArray *attachmentsArray; -} -- (BOOL)hasBody; -- (BOOL)hasGroup; -- (BOOL)hasFlags; -@property (readonly, strong) NSString *body; -@property (readonly, strong) NSArray *attachments; -@property (readonly, strong) PushMessageContentGroupContext *group; -@property (readonly) UInt32 flags; -- (PushMessageContentAttachmentPointer *)attachmentsAtIndex:(NSUInteger)index; - -+ (PushMessageContent *)defaultInstance; -- (PushMessageContent *)defaultInstance; - -- (BOOL)isInitialized; -- (void)writeToCodedOutputStream:(PBCodedOutputStream *)output; -- (PushMessageContentBuilder *)builder; -+ (PushMessageContentBuilder *)builder; -+ (PushMessageContentBuilder *)builderWithPrototype:(PushMessageContent *)prototype; -- (PushMessageContentBuilder *)toBuilder; - -+ (PushMessageContent *)parseFromData:(NSData *)data; -+ (PushMessageContent *)parseFromData:(NSData *)data extensionRegistry:(PBExtensionRegistry *)extensionRegistry; -+ (PushMessageContent *)parseFromInputStream:(NSInputStream *)input; -+ (PushMessageContent *)parseFromInputStream:(NSInputStream *)input - extensionRegistry:(PBExtensionRegistry *)extensionRegistry; -+ (PushMessageContent *)parseFromCodedInputStream:(PBCodedInputStream *)input; -+ (PushMessageContent *)parseFromCodedInputStream:(PBCodedInputStream *)input - extensionRegistry:(PBExtensionRegistry *)extensionRegistry; -@end - -@interface PushMessageContentAttachmentPointer : PBGeneratedMessage { - @private - BOOL hasId_ : 1; - BOOL hasContentType_ : 1; - BOOL hasKey_ : 1; - UInt64 id; - NSString *contentType; - NSData *key; -} -- (BOOL)hasId; -- (BOOL)hasContentType; -- (BOOL)hasKey; -@property (readonly) UInt64 id; -@property (readonly, strong) NSString *contentType; -@property (readonly, strong) NSData *key; - -+ (PushMessageContentAttachmentPointer *)defaultInstance; -- (PushMessageContentAttachmentPointer *)defaultInstance; - -- (BOOL)isInitialized; -- (void)writeToCodedOutputStream:(PBCodedOutputStream *)output; -- (PushMessageContentAttachmentPointerBuilder *)builder; -+ (PushMessageContentAttachmentPointerBuilder *)builder; -+ (PushMessageContentAttachmentPointerBuilder *)builderWithPrototype:(PushMessageContentAttachmentPointer *)prototype; -- (PushMessageContentAttachmentPointerBuilder *)toBuilder; - -+ (PushMessageContentAttachmentPointer *)parseFromData:(NSData *)data; -+ (PushMessageContentAttachmentPointer *)parseFromData:(NSData *)data - extensionRegistry:(PBExtensionRegistry *)extensionRegistry; -+ (PushMessageContentAttachmentPointer *)parseFromInputStream:(NSInputStream *)input; -+ (PushMessageContentAttachmentPointer *)parseFromInputStream:(NSInputStream *)input - extensionRegistry:(PBExtensionRegistry *)extensionRegistry; -+ (PushMessageContentAttachmentPointer *)parseFromCodedInputStream:(PBCodedInputStream *)input; -+ (PushMessageContentAttachmentPointer *)parseFromCodedInputStream:(PBCodedInputStream *)input - extensionRegistry:(PBExtensionRegistry *)extensionRegistry; -@end - -@interface PushMessageContentAttachmentPointerBuilder : PBGeneratedMessageBuilder { - @private - PushMessageContentAttachmentPointer *result; -} - -- (PushMessageContentAttachmentPointer *)defaultInstance; - -- (PushMessageContentAttachmentPointerBuilder *)clear; -- (PushMessageContentAttachmentPointerBuilder *)clone; - -- (PushMessageContentAttachmentPointer *)build; -- (PushMessageContentAttachmentPointer *)buildPartial; - -- (PushMessageContentAttachmentPointerBuilder *)mergeFrom:(PushMessageContentAttachmentPointer *)other; -- (PushMessageContentAttachmentPointerBuilder *)mergeFromCodedInputStream:(PBCodedInputStream *)input; -- (PushMessageContentAttachmentPointerBuilder *)mergeFromCodedInputStream:(PBCodedInputStream *)input - extensionRegistry:(PBExtensionRegistry *)extensionRegistry; - -- (BOOL)hasId; -- (UInt64)id; -- (PushMessageContentAttachmentPointerBuilder *)setId:(UInt64)value; -- (PushMessageContentAttachmentPointerBuilder *)clearId; - -- (BOOL)hasContentType; -- (NSString *)contentType; -- (PushMessageContentAttachmentPointerBuilder *)setContentType:(NSString *)value; -- (PushMessageContentAttachmentPointerBuilder *)clearContentType; - -- (BOOL)hasKey; -- (NSData *)key; -- (PushMessageContentAttachmentPointerBuilder *)setKey:(NSData *)value; -- (PushMessageContentAttachmentPointerBuilder *)clearKey; -@end - -@interface PushMessageContentGroupContext : PBGeneratedMessage { - @private - BOOL hasName_ : 1; - BOOL hasAvatar_ : 1; - BOOL hasId_ : 1; - BOOL hasType_ : 1; - NSString *name; - PushMessageContentAttachmentPointer *avatar; - NSData *id; - PushMessageContentGroupContextType type; - NSMutableArray *membersArray; -} -- (BOOL)hasId; -- (BOOL)hasType; -- (BOOL)hasName; -- (BOOL)hasAvatar; -@property (readonly, strong) NSData *id; -@property (readonly) PushMessageContentGroupContextType type; -@property (readonly, strong) NSString *name; -@property (readonly, strong) PushMessageContentAttachmentPointer *avatar; -- (NSArray *)members; -- (NSString *)membersAtIndex:(NSUInteger)index; - -+ (PushMessageContentGroupContext *)defaultInstance; -- (PushMessageContentGroupContext *)defaultInstance; - -- (BOOL)isInitialized; -- (void)writeToCodedOutputStream:(PBCodedOutputStream *)output; -- (PushMessageContentGroupContextBuilder *)builder; -+ (PushMessageContentGroupContextBuilder *)builder; -+ (PushMessageContentGroupContextBuilder *)builderWithPrototype:(PushMessageContentGroupContext *)prototype; -- (PushMessageContentGroupContextBuilder *)toBuilder; - -+ (PushMessageContentGroupContext *)parseFromData:(NSData *)data; -+ (PushMessageContentGroupContext *)parseFromData:(NSData *)data - extensionRegistry:(PBExtensionRegistry *)extensionRegistry; -+ (PushMessageContentGroupContext *)parseFromInputStream:(NSInputStream *)input; -+ (PushMessageContentGroupContext *)parseFromInputStream:(NSInputStream *)input - extensionRegistry:(PBExtensionRegistry *)extensionRegistry; -+ (PushMessageContentGroupContext *)parseFromCodedInputStream:(PBCodedInputStream *)input; -+ (PushMessageContentGroupContext *)parseFromCodedInputStream:(PBCodedInputStream *)input - extensionRegistry:(PBExtensionRegistry *)extensionRegistry; -@end - -@interface PushMessageContentGroupContextBuilder : PBGeneratedMessageBuilder { - @private - PushMessageContentGroupContext *result; -} - -- (PushMessageContentGroupContext *)defaultInstance; - -- (PushMessageContentGroupContextBuilder *)clear; -- (PushMessageContentGroupContextBuilder *)clone; - -- (PushMessageContentGroupContext *)build; -- (PushMessageContentGroupContext *)buildPartial; - -- (PushMessageContentGroupContextBuilder *)mergeFrom:(PushMessageContentGroupContext *)other; -- (PushMessageContentGroupContextBuilder *)mergeFromCodedInputStream:(PBCodedInputStream *)input; -- (PushMessageContentGroupContextBuilder *)mergeFromCodedInputStream:(PBCodedInputStream *)input - extensionRegistry:(PBExtensionRegistry *)extensionRegistry; - -- (BOOL)hasId; -- (NSData *)id; -- (PushMessageContentGroupContextBuilder *)setId:(NSData *)value; -- (PushMessageContentGroupContextBuilder *)clearId; - -- (BOOL)hasType; -- (PushMessageContentGroupContextType)type; -- (PushMessageContentGroupContextBuilder *)setType:(PushMessageContentGroupContextType)value; -- (PushMessageContentGroupContextBuilder *)clearType; - -- (BOOL)hasName; -- (NSString *)name; -- (PushMessageContentGroupContextBuilder *)setName:(NSString *)value; -- (PushMessageContentGroupContextBuilder *)clearName; - -- (NSMutableArray *)members; -- (NSString *)membersAtIndex:(NSUInteger)index; -- (PushMessageContentGroupContextBuilder *)addMembers:(NSString *)value; -- (PushMessageContentGroupContextBuilder *)setMembersArray:(NSArray *)array; -- (PushMessageContentGroupContextBuilder *)clearMembers; - -- (BOOL)hasAvatar; -- (PushMessageContentAttachmentPointer *)avatar; -- (PushMessageContentGroupContextBuilder *)setAvatar:(PushMessageContentAttachmentPointer *)value; -- (PushMessageContentGroupContextBuilder *)setAvatarBuilder: - (PushMessageContentAttachmentPointerBuilder *)builderForValue; -- (PushMessageContentGroupContextBuilder *)mergeAvatar:(PushMessageContentAttachmentPointer *)value; -- (PushMessageContentGroupContextBuilder *)clearAvatar; -@end - -@interface PushMessageContentBuilder : PBGeneratedMessageBuilder { - @private - PushMessageContent *result; -} - -- (PushMessageContent *)defaultInstance; - -- (PushMessageContentBuilder *)clear; -- (PushMessageContentBuilder *)clone; - -- (PushMessageContent *)build; -- (PushMessageContent *)buildPartial; - -- (PushMessageContentBuilder *)mergeFrom:(PushMessageContent *)other; -- (PushMessageContentBuilder *)mergeFromCodedInputStream:(PBCodedInputStream *)input; -- (PushMessageContentBuilder *)mergeFromCodedInputStream:(PBCodedInputStream *)input - extensionRegistry:(PBExtensionRegistry *)extensionRegistry; - -- (BOOL)hasBody; -- (NSString *)body; -- (PushMessageContentBuilder *)setBody:(NSString *)value; -- (PushMessageContentBuilder *)clearBody; - -- (NSMutableArray *)attachments; -- (PushMessageContentAttachmentPointer *)attachmentsAtIndex:(NSUInteger)index; -- (PushMessageContentBuilder *)addAttachments:(PushMessageContentAttachmentPointer *)value; -- (PushMessageContentBuilder *)setAttachmentsArray:(NSArray *)array; -- (PushMessageContentBuilder *)clearAttachments; - -- (BOOL)hasGroup; -- (PushMessageContentGroupContext *)group; -- (PushMessageContentBuilder *)setGroup:(PushMessageContentGroupContext *)value; -- (PushMessageContentBuilder *)setGroupBuilder:(PushMessageContentGroupContextBuilder *)builderForValue; -- (PushMessageContentBuilder *)mergeGroup:(PushMessageContentGroupContext *)value; -- (PushMessageContentBuilder *)clearGroup; - -- (BOOL)hasFlags; -- (UInt32)flags; -- (PushMessageContentBuilder *)setFlags:(UInt32)value; -- (PushMessageContentBuilder *)clearFlags; -@end - - -// @@protoc_insertion_point(global_scope) diff --git a/src/Messages/IncomingPushMessageSignal.pb.m b/src/Messages/IncomingPushMessageSignal.pb.m deleted file mode 100644 index f2a674a..0000000 --- a/src/Messages/IncomingPushMessageSignal.pb.m +++ /dev/null @@ -1,1616 +0,0 @@ -// Generated by the protocol buffer compiler. DO NOT EDIT! - -#import "IncomingPushMessageSignal.pb.h" -// @@protoc_insertion_point(imports) - -@implementation IncomingPushMessageSignalRoot -static PBExtensionRegistry *extensionRegistry = nil; -+ (PBExtensionRegistry *)extensionRegistry { - return extensionRegistry; -} - -+ (void)initialize { - if (self == [IncomingPushMessageSignalRoot class]) { - PBMutableExtensionRegistry *registry = [PBMutableExtensionRegistry registry]; - [self registerAllExtensions:registry]; - extensionRegistry = registry; - } -} -+ (void)registerAllExtensions:(PBMutableExtensionRegistry *)registry { -} -@end - -@interface IncomingPushMessageSignal () -@property IncomingPushMessageSignalType type; -@property (strong) NSString *source; -@property UInt32 sourceDevice; -@property (strong) NSString *relay; -@property UInt64 timestamp; -@property (strong) NSData *message; -@end - -@implementation IncomingPushMessageSignal - -- (BOOL)hasType { - return !!hasType_; -} -- (void)setHasType:(BOOL)value_ { - hasType_ = !!value_; -} -@synthesize type; -- (BOOL)hasSource { - return !!hasSource_; -} -- (void)setHasSource:(BOOL)value_ { - hasSource_ = !!value_; -} -@synthesize source; -- (BOOL)hasSourceDevice { - return !!hasSourceDevice_; -} -- (void)setHasSourceDevice:(BOOL)value_ { - hasSourceDevice_ = !!value_; -} -@synthesize sourceDevice; -- (BOOL)hasRelay { - return !!hasRelay_; -} -- (void)setHasRelay:(BOOL)value_ { - hasRelay_ = !!value_; -} -@synthesize relay; -- (BOOL)hasTimestamp { - return !!hasTimestamp_; -} -- (void)setHasTimestamp:(BOOL)value_ { - hasTimestamp_ = !!value_; -} -@synthesize timestamp; -- (BOOL)hasMessage { - return !!hasMessage_; -} -- (void)setHasMessage:(BOOL)value_ { - hasMessage_ = !!value_; -} -@synthesize message; -- (id)init { - if ((self = [super init])) { - self.type = IncomingPushMessageSignalTypeUnknown; - self.source = @""; - self.sourceDevice = 0; - self.relay = @""; - self.timestamp = 0L; - self.message = [NSData data]; - } - return self; -} -static IncomingPushMessageSignal *defaultIncomingPushMessageSignalInstance = nil; -+ (void)initialize { - if (self == [IncomingPushMessageSignal class]) { - defaultIncomingPushMessageSignalInstance = [[IncomingPushMessageSignal alloc] init]; - } -} -+ (IncomingPushMessageSignal *)defaultInstance { - return defaultIncomingPushMessageSignalInstance; -} -- (IncomingPushMessageSignal *)defaultInstance { - return defaultIncomingPushMessageSignalInstance; -} -- (BOOL)isInitialized { - return YES; -} -- (void)writeToCodedOutputStream:(PBCodedOutputStream *)output { - if (self.hasType) { - [output writeEnum:1 value:self.type]; - } - if (self.hasSource) { - [output writeString:2 value:self.source]; - } - if (self.hasRelay) { - [output writeString:3 value:self.relay]; - } - if (self.hasTimestamp) { - [output writeUInt64:5 value:self.timestamp]; - } - if (self.hasMessage) { - [output writeData:6 value:self.message]; - } - if (self.hasSourceDevice) { - [output writeUInt32:7 value:self.sourceDevice]; - } - [self.unknownFields writeToCodedOutputStream:output]; -} -- (SInt32)serializedSize { - __block SInt32 size_ = memoizedSerializedSize; - if (size_ != -1) { - return size_; - } - - size_ = 0; - if (self.hasType) { - size_ += computeEnumSize(1, self.type); - } - if (self.hasSource) { - size_ += computeStringSize(2, self.source); - } - if (self.hasRelay) { - size_ += computeStringSize(3, self.relay); - } - if (self.hasTimestamp) { - size_ += computeUInt64Size(5, self.timestamp); - } - if (self.hasMessage) { - size_ += computeDataSize(6, self.message); - } - if (self.hasSourceDevice) { - size_ += computeUInt32Size(7, self.sourceDevice); - } - size_ += self.unknownFields.serializedSize; - memoizedSerializedSize = size_; - return size_; -} -+ (IncomingPushMessageSignal *)parseFromData:(NSData *)data { - return (IncomingPushMessageSignal *)[[[IncomingPushMessageSignal builder] mergeFromData:data] build]; -} -+ (IncomingPushMessageSignal *)parseFromData:(NSData *)data extensionRegistry:(PBExtensionRegistry *)extensionRegistry { - return (IncomingPushMessageSignal *)[ - [[IncomingPushMessageSignal builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; -} -+ (IncomingPushMessageSignal *)parseFromInputStream:(NSInputStream *)input { - return (IncomingPushMessageSignal *)[[[IncomingPushMessageSignal builder] mergeFromInputStream:input] build]; -} -+ (IncomingPushMessageSignal *)parseFromInputStream:(NSInputStream *)input - extensionRegistry:(PBExtensionRegistry *)extensionRegistry { - return (IncomingPushMessageSignal *)[ - [[IncomingPushMessageSignal builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (IncomingPushMessageSignal *)parseFromCodedInputStream:(PBCodedInputStream *)input { - return (IncomingPushMessageSignal *)[[[IncomingPushMessageSignal builder] mergeFromCodedInputStream:input] build]; -} -+ (IncomingPushMessageSignal *)parseFromCodedInputStream:(PBCodedInputStream *)input - extensionRegistry:(PBExtensionRegistry *)extensionRegistry { - return (IncomingPushMessageSignal *)[ - [[IncomingPushMessageSignal builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] - build]; -} -+ (IncomingPushMessageSignalBuilder *)builder { - return [[IncomingPushMessageSignalBuilder alloc] init]; -} -+ (IncomingPushMessageSignalBuilder *)builderWithPrototype:(IncomingPushMessageSignal *)prototype { - return [[IncomingPushMessageSignal builder] mergeFrom:prototype]; -} -- (IncomingPushMessageSignalBuilder *)builder { - return [IncomingPushMessageSignal builder]; -} -- (IncomingPushMessageSignalBuilder *)toBuilder { - return [IncomingPushMessageSignal builderWithPrototype:self]; -} -- (void)writeDescriptionTo:(NSMutableString *)output withIndent:(NSString *)indent { - if (self.hasType) { - [output appendFormat:@"%@%@: %d\n", indent, @"type", self.type]; - } - if (self.hasSource) { - [output appendFormat:@"%@%@: %@\n", indent, @"source", self.source]; - } - if (self.hasRelay) { - [output appendFormat:@"%@%@: %@\n", indent, @"relay", self.relay]; - } - if (self.hasTimestamp) { - [output appendFormat:@"%@%@: %@\n", indent, @"timestamp", [NSNumber numberWithLongLong:self.timestamp]]; - } - if (self.hasMessage) { - [output appendFormat:@"%@%@: %@\n", indent, @"message", self.message]; - } - if (self.hasSourceDevice) { - [output appendFormat:@"%@%@: %@\n", indent, @"sourceDevice", [NSNumber numberWithInteger:self.sourceDevice]]; - } - [self.unknownFields writeDescriptionTo:output withIndent:indent]; -} -- (BOOL)isEqual:(id)other { - if (other == self) { - return YES; - } - if (![other isKindOfClass:[IncomingPushMessageSignal class]]) { - return NO; - } - IncomingPushMessageSignal *otherMessage = other; - return self.hasType == otherMessage.hasType && (!self.hasType || self.type == otherMessage.type) && - self.hasSource == otherMessage.hasSource && (!self.hasSource || [self.source isEqual:otherMessage.source]) && - self.hasRelay == otherMessage.hasRelay && (!self.hasRelay || [self.relay isEqual:otherMessage.relay]) && - self.hasTimestamp == otherMessage.hasTimestamp && - (!self.hasTimestamp || self.timestamp == otherMessage.timestamp) && - self.hasMessage == otherMessage.hasMessage && - (!self.hasMessage || [self.message isEqual:otherMessage.message]) && - self.hasSourceDevice == otherMessage.hasSourceDevice && - (!self.hasSourceDevice || self.sourceDevice == otherMessage.sourceDevice) && - (self.unknownFields == otherMessage.unknownFields || - (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); -} -- (NSUInteger)hash { - __block NSUInteger hashCode = 7; - if (self.hasType) { - hashCode = hashCode * 31 + self.type; - } - if (self.hasSource) { - hashCode = hashCode * 31 + [self.source hash]; - } - if (self.hasRelay) { - hashCode = hashCode * 31 + [self.relay hash]; - } - if (self.hasTimestamp) { - hashCode = hashCode * 31 + [[NSNumber numberWithLongLong:self.timestamp] hash]; - } - if (self.hasMessage) { - hashCode = hashCode * 31 + [self.message hash]; - } - if (self.hasSourceDevice) { - hashCode = hashCode * 31 + [[NSNumber numberWithInteger:self.sourceDevice] hash]; - } - hashCode = hashCode * 31 + [self.unknownFields hash]; - return hashCode; -} -@end - -BOOL IncomingPushMessageSignalTypeIsValidValue(IncomingPushMessageSignalType value) { - switch (value) { - case IncomingPushMessageSignalTypeUnknown: - case IncomingPushMessageSignalTypeCiphertext: - case IncomingPushMessageSignalTypeKeyExchange: - case IncomingPushMessageSignalTypePrekeyBundle: - case IncomingPushMessageSignalTypePlaintext: - case IncomingPushMessageSignalTypeReceipt: - return YES; - default: - return NO; - } -} -@interface IncomingPushMessageSignalBuilder () -@property (strong) IncomingPushMessageSignal *result; -@end - -@implementation IncomingPushMessageSignalBuilder -@synthesize result; -- (id)init { - if ((self = [super init])) { - self.result = [[IncomingPushMessageSignal alloc] init]; - } - return self; -} -- (PBGeneratedMessage *)internalGetResult { - return result; -} -- (IncomingPushMessageSignalBuilder *)clear { - self.result = [[IncomingPushMessageSignal alloc] init]; - return self; -} -- (IncomingPushMessageSignalBuilder *)clone { - return [IncomingPushMessageSignal builderWithPrototype:result]; -} -- (IncomingPushMessageSignal *)defaultInstance { - return [IncomingPushMessageSignal defaultInstance]; -} -- (IncomingPushMessageSignal *)build { - [self checkInitialized]; - return [self buildPartial]; -} -- (IncomingPushMessageSignal *)buildPartial { - IncomingPushMessageSignal *returnMe = result; - self.result = nil; - return returnMe; -} -- (IncomingPushMessageSignalBuilder *)mergeFrom:(IncomingPushMessageSignal *)other { - if (other == [IncomingPushMessageSignal defaultInstance]) { - return self; - } - if (other.hasType) { - [self setType:other.type]; - } - if (other.hasSource) { - [self setSource:other.source]; - } - if (other.hasSourceDevice) { - [self setSourceDevice:other.sourceDevice]; - } - if (other.hasRelay) { - [self setRelay:other.relay]; - } - if (other.hasTimestamp) { - [self setTimestamp:other.timestamp]; - } - if (other.hasMessage) { - [self setMessage:other.message]; - } - [self mergeUnknownFields:other.unknownFields]; - return self; -} -- (IncomingPushMessageSignalBuilder *)mergeFromCodedInputStream:(PBCodedInputStream *)input { - return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; -} -- (IncomingPushMessageSignalBuilder *)mergeFromCodedInputStream:(PBCodedInputStream *)input - extensionRegistry:(PBExtensionRegistry *)extensionRegistry { - PBUnknownFieldSetBuilder *unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; - while (YES) { - SInt32 tag = [input readTag]; - switch (tag) { - case 0: - [self setUnknownFields:[unknownFields build]]; - return self; - default: { - if (![self parseUnknownField:input - unknownFields:unknownFields - extensionRegistry:extensionRegistry - tag:tag]) { - [self setUnknownFields:[unknownFields build]]; - return self; - } - break; - } - case 8: { - IncomingPushMessageSignalType value = (IncomingPushMessageSignalType)[input readEnum]; - if (IncomingPushMessageSignalTypeIsValidValue(value)) { - [self setType:value]; - } else { - [unknownFields mergeVarintField:1 value:value]; - } - break; - } - case 18: { - [self setSource:[input readString]]; - break; - } - case 26: { - [self setRelay:[input readString]]; - break; - } - case 40: { - [self setTimestamp:[input readUInt64]]; - break; - } - case 50: { - [self setMessage:[input readData]]; - break; - } - case 56: { - [self setSourceDevice:[input readUInt32]]; - break; - } - } - } -} -- (BOOL)hasType { - return result.hasType; -} -- (IncomingPushMessageSignalType)type { - return result.type; -} -- (IncomingPushMessageSignalBuilder *)setType:(IncomingPushMessageSignalType)value { - result.hasType = YES; - result.type = value; - return self; -} -- (IncomingPushMessageSignalBuilder *)clearType { - result.hasType = NO; - result.type = IncomingPushMessageSignalTypeUnknown; - return self; -} -- (BOOL)hasSource { - return result.hasSource; -} -- (NSString *)source { - return result.source; -} -- (IncomingPushMessageSignalBuilder *)setSource:(NSString *)value { - result.hasSource = YES; - result.source = value; - return self; -} -- (IncomingPushMessageSignalBuilder *)clearSource { - result.hasSource = NO; - result.source = @""; - return self; -} -- (BOOL)hasSourceDevice { - return result.hasSourceDevice; -} -- (UInt32)sourceDevice { - return result.sourceDevice; -} -- (IncomingPushMessageSignalBuilder *)setSourceDevice:(UInt32)value { - result.hasSourceDevice = YES; - result.sourceDevice = value; - return self; -} -- (IncomingPushMessageSignalBuilder *)clearSourceDevice { - result.hasSourceDevice = NO; - result.sourceDevice = 0; - return self; -} -- (BOOL)hasRelay { - return result.hasRelay; -} -- (NSString *)relay { - return result.relay; -} -- (IncomingPushMessageSignalBuilder *)setRelay:(NSString *)value { - result.hasRelay = YES; - result.relay = value; - return self; -} -- (IncomingPushMessageSignalBuilder *)clearRelay { - result.hasRelay = NO; - result.relay = @""; - return self; -} -- (BOOL)hasTimestamp { - return result.hasTimestamp; -} -- (UInt64)timestamp { - return result.timestamp; -} -- (IncomingPushMessageSignalBuilder *)setTimestamp:(UInt64)value { - result.hasTimestamp = YES; - result.timestamp = value; - return self; -} -- (IncomingPushMessageSignalBuilder *)clearTimestamp { - result.hasTimestamp = NO; - result.timestamp = 0L; - return self; -} -- (BOOL)hasMessage { - return result.hasMessage; -} -- (NSData *)message { - return result.message; -} -- (IncomingPushMessageSignalBuilder *)setMessage:(NSData *)value { - result.hasMessage = YES; - result.message = value; - return self; -} -- (IncomingPushMessageSignalBuilder *)clearMessage { - result.hasMessage = NO; - result.message = [NSData data]; - return self; -} -@end - -@interface PushMessageContent () -@property (strong) NSString *body; -@property (strong) NSMutableArray *attachmentsArray; -@property (strong) PushMessageContentGroupContext *group; -@property UInt32 flags; -@end - -@implementation PushMessageContent - -- (BOOL)hasBody { - return !!hasBody_; -} -- (void)setHasBody:(BOOL)value_ { - hasBody_ = !!value_; -} -@synthesize body; -@synthesize attachmentsArray; -@dynamic attachments; -- (BOOL)hasGroup { - return !!hasGroup_; -} -- (void)setHasGroup:(BOOL)value_ { - hasGroup_ = !!value_; -} -@synthesize group; -- (BOOL)hasFlags { - return !!hasFlags_; -} -- (void)setHasFlags:(BOOL)value_ { - hasFlags_ = !!value_; -} -@synthesize flags; -- (id)init { - if ((self = [super init])) { - self.body = @""; - self.group = [PushMessageContentGroupContext defaultInstance]; - self.flags = 0; - } - return self; -} -static PushMessageContent *defaultPushMessageContentInstance = nil; -+ (void)initialize { - if (self == [PushMessageContent class]) { - defaultPushMessageContentInstance = [[PushMessageContent alloc] init]; - } -} -+ (PushMessageContent *)defaultInstance { - return defaultPushMessageContentInstance; -} -- (PushMessageContent *)defaultInstance { - return defaultPushMessageContentInstance; -} -- (NSArray *)attachments { - return attachmentsArray; -} -- (PushMessageContentAttachmentPointer *)attachmentsAtIndex:(NSUInteger)index { - return [attachmentsArray objectAtIndex:index]; -} -- (BOOL)isInitialized { - return YES; -} -- (void)writeToCodedOutputStream:(PBCodedOutputStream *)output { - if (self.hasBody) { - [output writeString:1 value:self.body]; - } - [self.attachmentsArray - enumerateObjectsUsingBlock:^(PushMessageContentAttachmentPointer *element, NSUInteger idx, BOOL *stop) { - [output writeMessage:2 value:element]; - }]; - if (self.hasGroup) { - [output writeMessage:3 value:self.group]; - } - if (self.hasFlags) { - [output writeUInt32:4 value:self.flags]; - } - [self.unknownFields writeToCodedOutputStream:output]; -} -- (SInt32)serializedSize { - __block SInt32 size_ = memoizedSerializedSize; - if (size_ != -1) { - return size_; - } - - size_ = 0; - if (self.hasBody) { - size_ += computeStringSize(1, self.body); - } - [self.attachmentsArray - enumerateObjectsUsingBlock:^(PushMessageContentAttachmentPointer *element, NSUInteger idx, BOOL *stop) { - size_ += computeMessageSize(2, element); - }]; - if (self.hasGroup) { - size_ += computeMessageSize(3, self.group); - } - if (self.hasFlags) { - size_ += computeUInt32Size(4, self.flags); - } - size_ += self.unknownFields.serializedSize; - memoizedSerializedSize = size_; - return size_; -} -+ (PushMessageContent *)parseFromData:(NSData *)data { - return (PushMessageContent *)[[[PushMessageContent builder] mergeFromData:data] build]; -} -+ (PushMessageContent *)parseFromData:(NSData *)data extensionRegistry:(PBExtensionRegistry *)extensionRegistry { - return (PushMessageContent *)[[[PushMessageContent builder] mergeFromData:data extensionRegistry:extensionRegistry] - build]; -} -+ (PushMessageContent *)parseFromInputStream:(NSInputStream *)input { - return (PushMessageContent *)[[[PushMessageContent builder] mergeFromInputStream:input] build]; -} -+ (PushMessageContent *)parseFromInputStream:(NSInputStream *)input - extensionRegistry:(PBExtensionRegistry *)extensionRegistry { - return (PushMessageContent *)[ - [[PushMessageContent builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (PushMessageContent *)parseFromCodedInputStream:(PBCodedInputStream *)input { - return (PushMessageContent *)[[[PushMessageContent builder] mergeFromCodedInputStream:input] build]; -} -+ (PushMessageContent *)parseFromCodedInputStream:(PBCodedInputStream *)input - extensionRegistry:(PBExtensionRegistry *)extensionRegistry { - return (PushMessageContent *)[ - [[PushMessageContent builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; -} -+ (PushMessageContentBuilder *)builder { - return [[PushMessageContentBuilder alloc] init]; -} -+ (PushMessageContentBuilder *)builderWithPrototype:(PushMessageContent *)prototype { - return [[PushMessageContent builder] mergeFrom:prototype]; -} -- (PushMessageContentBuilder *)builder { - return [PushMessageContent builder]; -} -- (PushMessageContentBuilder *)toBuilder { - return [PushMessageContent builderWithPrototype:self]; -} -- (void)writeDescriptionTo:(NSMutableString *)output withIndent:(NSString *)indent { - if (self.hasBody) { - [output appendFormat:@"%@%@: %@\n", indent, @"body", self.body]; - } - [self.attachmentsArray - enumerateObjectsUsingBlock:^(PushMessageContentAttachmentPointer *element, NSUInteger idx, BOOL *stop) { - [output appendFormat:@"%@%@ {\n", indent, @"attachments"]; - [element writeDescriptionTo:output withIndent:[NSString stringWithFormat:@"%@ ", indent]]; - [output appendFormat:@"%@}\n", indent]; - }]; - if (self.hasGroup) { - [output appendFormat:@"%@%@ {\n", indent, @"group"]; - [self.group writeDescriptionTo:output withIndent:[NSString stringWithFormat:@"%@ ", indent]]; - [output appendFormat:@"%@}\n", indent]; - } - if (self.hasFlags) { - [output appendFormat:@"%@%@: %@\n", indent, @"flags", [NSNumber numberWithInteger:self.flags]]; - } - [self.unknownFields writeDescriptionTo:output withIndent:indent]; -} -- (BOOL)isEqual:(id)other { - if (other == self) { - return YES; - } - if (![other isKindOfClass:[PushMessageContent class]]) { - return NO; - } - PushMessageContent *otherMessage = other; - return self.hasBody == otherMessage.hasBody && (!self.hasBody || [self.body isEqual:otherMessage.body]) && - [self.attachmentsArray isEqualToArray:otherMessage.attachmentsArray] && - self.hasGroup == otherMessage.hasGroup && (!self.hasGroup || [self.group isEqual:otherMessage.group]) && - self.hasFlags == otherMessage.hasFlags && (!self.hasFlags || self.flags == otherMessage.flags) && - (self.unknownFields == otherMessage.unknownFields || - (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); -} -- (NSUInteger)hash { - __block NSUInteger hashCode = 7; - if (self.hasBody) { - hashCode = hashCode * 31 + [self.body hash]; - } - [self.attachmentsArray - enumerateObjectsUsingBlock:^(PushMessageContentAttachmentPointer *element, NSUInteger idx, BOOL *stop) { - hashCode = hashCode * 31 + [element hash]; - }]; - if (self.hasGroup) { - hashCode = hashCode * 31 + [self.group hash]; - } - if (self.hasFlags) { - hashCode = hashCode * 31 + [[NSNumber numberWithInteger:self.flags] hash]; - } - hashCode = hashCode * 31 + [self.unknownFields hash]; - return hashCode; -} -@end - -BOOL PushMessageContentFlagsIsValidValue(PushMessageContentFlags value) { - switch (value) { - case PushMessageContentFlagsEndSession: - return YES; - default: - return NO; - } -} -@interface PushMessageContentAttachmentPointer () -@property UInt64 id; -@property (strong) NSString *contentType; -@property (strong) NSData *key; -@end - -@implementation PushMessageContentAttachmentPointer - -- (BOOL)hasId { - return !!hasId_; -} -- (void)setHasId:(BOOL)value_ { - hasId_ = !!value_; -} -@synthesize id; -- (BOOL)hasContentType { - return !!hasContentType_; -} -- (void)setHasContentType:(BOOL)value_ { - hasContentType_ = !!value_; -} -@synthesize contentType; -- (BOOL)hasKey { - return !!hasKey_; -} -- (void)setHasKey:(BOOL)value_ { - hasKey_ = !!value_; -} -@synthesize key; -- (id)init { - if ((self = [super init])) { - self.id = 0L; - self.contentType = @""; - self.key = [NSData data]; - } - return self; -} -static PushMessageContentAttachmentPointer *defaultPushMessageContentAttachmentPointerInstance = nil; -+ (void)initialize { - if (self == [PushMessageContentAttachmentPointer class]) { - defaultPushMessageContentAttachmentPointerInstance = [[PushMessageContentAttachmentPointer alloc] init]; - } -} -+ (PushMessageContentAttachmentPointer *)defaultInstance { - return defaultPushMessageContentAttachmentPointerInstance; -} -- (PushMessageContentAttachmentPointer *)defaultInstance { - return defaultPushMessageContentAttachmentPointerInstance; -} -- (BOOL)isInitialized { - return YES; -} -- (void)writeToCodedOutputStream:(PBCodedOutputStream *)output { - if (self.hasId) { - [output writeFixed64:1 value:self.id]; - } - if (self.hasContentType) { - [output writeString:2 value:self.contentType]; - } - if (self.hasKey) { - [output writeData:3 value:self.key]; - } - [self.unknownFields writeToCodedOutputStream:output]; -} -- (SInt32)serializedSize { - __block SInt32 size_ = memoizedSerializedSize; - if (size_ != -1) { - return size_; - } - - size_ = 0; - if (self.hasId) { - size_ += computeFixed64Size(1, self.id); - } - if (self.hasContentType) { - size_ += computeStringSize(2, self.contentType); - } - if (self.hasKey) { - size_ += computeDataSize(3, self.key); - } - size_ += self.unknownFields.serializedSize; - memoizedSerializedSize = size_; - return size_; -} -+ (PushMessageContentAttachmentPointer *)parseFromData:(NSData *)data { - return (PushMessageContentAttachmentPointer *)[[[PushMessageContentAttachmentPointer builder] mergeFromData:data] - build]; -} -+ (PushMessageContentAttachmentPointer *)parseFromData:(NSData *)data - extensionRegistry:(PBExtensionRegistry *)extensionRegistry { - return (PushMessageContentAttachmentPointer *)[ - [[PushMessageContentAttachmentPointer builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; -} -+ (PushMessageContentAttachmentPointer *)parseFromInputStream:(NSInputStream *)input { - return (PushMessageContentAttachmentPointer *)[ - [[PushMessageContentAttachmentPointer builder] mergeFromInputStream:input] build]; -} -+ (PushMessageContentAttachmentPointer *)parseFromInputStream:(NSInputStream *)input - extensionRegistry:(PBExtensionRegistry *)extensionRegistry { - return (PushMessageContentAttachmentPointer *)[ - [[PushMessageContentAttachmentPointer builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] - build]; -} -+ (PushMessageContentAttachmentPointer *)parseFromCodedInputStream:(PBCodedInputStream *)input { - return (PushMessageContentAttachmentPointer *)[ - [[PushMessageContentAttachmentPointer builder] mergeFromCodedInputStream:input] build]; -} -+ (PushMessageContentAttachmentPointer *)parseFromCodedInputStream:(PBCodedInputStream *)input - extensionRegistry:(PBExtensionRegistry *)extensionRegistry { - return (PushMessageContentAttachmentPointer *)[[[PushMessageContentAttachmentPointer builder] - mergeFromCodedInputStream:input - extensionRegistry:extensionRegistry] build]; -} -+ (PushMessageContentAttachmentPointerBuilder *)builder { - return [[PushMessageContentAttachmentPointerBuilder alloc] init]; -} -+ (PushMessageContentAttachmentPointerBuilder *)builderWithPrototype:(PushMessageContentAttachmentPointer *)prototype { - return [[PushMessageContentAttachmentPointer builder] mergeFrom:prototype]; -} -- (PushMessageContentAttachmentPointerBuilder *)builder { - return [PushMessageContentAttachmentPointer builder]; -} -- (PushMessageContentAttachmentPointerBuilder *)toBuilder { - return [PushMessageContentAttachmentPointer builderWithPrototype:self]; -} -- (void)writeDescriptionTo:(NSMutableString *)output withIndent:(NSString *)indent { - if (self.hasId) { - [output appendFormat:@"%@%@: %@\n", indent, @"id", [NSNumber numberWithLongLong:self.id]]; - } - if (self.hasContentType) { - [output appendFormat:@"%@%@: %@\n", indent, @"contentType", self.contentType]; - } - if (self.hasKey) { - [output appendFormat:@"%@%@: %@\n", indent, @"key", self.key]; - } - [self.unknownFields writeDescriptionTo:output withIndent:indent]; -} -- (BOOL)isEqual:(id)other { - if (other == self) { - return YES; - } - if (![other isKindOfClass:[PushMessageContentAttachmentPointer class]]) { - return NO; - } - PushMessageContentAttachmentPointer *otherMessage = other; - return self.hasId == otherMessage.hasId && (!self.hasId || self.id == otherMessage.id) && - self.hasContentType == otherMessage.hasContentType && - (!self.hasContentType || [self.contentType isEqual:otherMessage.contentType]) && - self.hasKey == otherMessage.hasKey && (!self.hasKey || [self.key isEqual:otherMessage.key]) && - (self.unknownFields == otherMessage.unknownFields || - (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); -} -- (NSUInteger)hash { - __block NSUInteger hashCode = 7; - if (self.hasId) { - hashCode = hashCode * 31 + [[NSNumber numberWithLongLong:self.id] hash]; - } - if (self.hasContentType) { - hashCode = hashCode * 31 + [self.contentType hash]; - } - if (self.hasKey) { - hashCode = hashCode * 31 + [self.key hash]; - } - hashCode = hashCode * 31 + [self.unknownFields hash]; - return hashCode; -} -@end - -@interface PushMessageContentAttachmentPointerBuilder () -@property (strong) PushMessageContentAttachmentPointer *result; -@end - -@implementation PushMessageContentAttachmentPointerBuilder -@synthesize result; -- (id)init { - if ((self = [super init])) { - self.result = [[PushMessageContentAttachmentPointer alloc] init]; - } - return self; -} -- (PBGeneratedMessage *)internalGetResult { - return result; -} -- (PushMessageContentAttachmentPointerBuilder *)clear { - self.result = [[PushMessageContentAttachmentPointer alloc] init]; - return self; -} -- (PushMessageContentAttachmentPointerBuilder *)clone { - return [PushMessageContentAttachmentPointer builderWithPrototype:result]; -} -- (PushMessageContentAttachmentPointer *)defaultInstance { - return [PushMessageContentAttachmentPointer defaultInstance]; -} -- (PushMessageContentAttachmentPointer *)build { - [self checkInitialized]; - return [self buildPartial]; -} -- (PushMessageContentAttachmentPointer *)buildPartial { - PushMessageContentAttachmentPointer *returnMe = result; - self.result = nil; - return returnMe; -} -- (PushMessageContentAttachmentPointerBuilder *)mergeFrom:(PushMessageContentAttachmentPointer *)other { - if (other == [PushMessageContentAttachmentPointer defaultInstance]) { - return self; - } - if (other.hasId) { - [self setId:other.id]; - } - if (other.hasContentType) { - [self setContentType:other.contentType]; - } - if (other.hasKey) { - [self setKey:other.key]; - } - [self mergeUnknownFields:other.unknownFields]; - return self; -} -- (PushMessageContentAttachmentPointerBuilder *)mergeFromCodedInputStream:(PBCodedInputStream *)input { - return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; -} -- (PushMessageContentAttachmentPointerBuilder *)mergeFromCodedInputStream:(PBCodedInputStream *)input - extensionRegistry:(PBExtensionRegistry *)extensionRegistry { - PBUnknownFieldSetBuilder *unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; - while (YES) { - SInt32 tag = [input readTag]; - switch (tag) { - case 0: - [self setUnknownFields:[unknownFields build]]; - return self; - default: { - if (![self parseUnknownField:input - unknownFields:unknownFields - extensionRegistry:extensionRegistry - tag:tag]) { - [self setUnknownFields:[unknownFields build]]; - return self; - } - break; - } - case 9: { - [self setId:[input readFixed64]]; - break; - } - case 18: { - [self setContentType:[input readString]]; - break; - } - case 26: { - [self setKey:[input readData]]; - break; - } - } - } -} -- (BOOL)hasId { - return result.hasId; -} -- (UInt64)id { - return result.id; -} -- (PushMessageContentAttachmentPointerBuilder *)setId:(UInt64)value { - result.hasId = YES; - result.id = value; - return self; -} -- (PushMessageContentAttachmentPointerBuilder *)clearId { - result.hasId = NO; - result.id = 0L; - return self; -} -- (BOOL)hasContentType { - return result.hasContentType; -} -- (NSString *)contentType { - return result.contentType; -} -- (PushMessageContentAttachmentPointerBuilder *)setContentType:(NSString *)value { - result.hasContentType = YES; - result.contentType = value; - return self; -} -- (PushMessageContentAttachmentPointerBuilder *)clearContentType { - result.hasContentType = NO; - result.contentType = @""; - return self; -} -- (BOOL)hasKey { - return result.hasKey; -} -- (NSData *)key { - return result.key; -} -- (PushMessageContentAttachmentPointerBuilder *)setKey:(NSData *)value { - result.hasKey = YES; - result.key = value; - return self; -} -- (PushMessageContentAttachmentPointerBuilder *)clearKey { - result.hasKey = NO; - result.key = [NSData data]; - return self; -} -@end - -@interface PushMessageContentGroupContext () -@property (strong) NSData *id; -@property PushMessageContentGroupContextType type; -@property (strong) NSString *name; -@property (strong) NSMutableArray *membersArray; -@property (strong) PushMessageContentAttachmentPointer *avatar; -@end - -@implementation PushMessageContentGroupContext - -- (BOOL)hasId { - return !!hasId_; -} -- (void)setHasId:(BOOL)value_ { - hasId_ = !!value_; -} -@synthesize id; -- (BOOL)hasType { - return !!hasType_; -} -- (void)setHasType:(BOOL)value_ { - hasType_ = !!value_; -} -@synthesize type; -- (BOOL)hasName { - return !!hasName_; -} -- (void)setHasName:(BOOL)value_ { - hasName_ = !!value_; -} -@synthesize name; -@synthesize membersArray; -- (BOOL)hasAvatar { - return !!hasAvatar_; -} -- (void)setHasAvatar:(BOOL)value_ { - hasAvatar_ = !!value_; -} -@synthesize avatar; -- (id)init { - if ((self = [super init])) { - self.id = [NSData data]; - self.type = PushMessageContentGroupContextTypeUnknown; - self.name = @""; - self.avatar = [PushMessageContentAttachmentPointer defaultInstance]; - } - return self; -} -static PushMessageContentGroupContext *defaultPushMessageContentGroupContextInstance = nil; -+ (void)initialize { - if (self == [PushMessageContentGroupContext class]) { - defaultPushMessageContentGroupContextInstance = [[PushMessageContentGroupContext alloc] init]; - } -} -+ (PushMessageContentGroupContext *)defaultInstance { - return defaultPushMessageContentGroupContextInstance; -} -- (PushMessageContentGroupContext *)defaultInstance { - return defaultPushMessageContentGroupContextInstance; -} -- (NSArray *)members { - return membersArray; -} -- (NSString *)membersAtIndex:(NSUInteger)index { - return [membersArray objectAtIndex:index]; -} -- (BOOL)isInitialized { - return YES; -} -- (void)writeToCodedOutputStream:(PBCodedOutputStream *)output { - if (self.hasId) { - [output writeData:1 value:self.id]; - } - if (self.hasType) { - [output writeEnum:2 value:self.type]; - } - if (self.hasName) { - [output writeString:3 value:self.name]; - } - [self.membersArray enumerateObjectsUsingBlock:^(NSString *element, NSUInteger idx, BOOL *stop) { - [output writeString:4 value:element]; - }]; - if (self.hasAvatar) { - [output writeMessage:5 value:self.avatar]; - } - [self.unknownFields writeToCodedOutputStream:output]; -} -- (SInt32)serializedSize { - __block SInt32 size_ = memoizedSerializedSize; - if (size_ != -1) { - return size_; - } - - size_ = 0; - if (self.hasId) { - size_ += computeDataSize(1, self.id); - } - if (self.hasType) { - size_ += computeEnumSize(2, self.type); - } - if (self.hasName) { - size_ += computeStringSize(3, self.name); - } - { - __block SInt32 dataSize = 0; - const NSUInteger count = self.membersArray.count; - [self.membersArray enumerateObjectsUsingBlock:^(NSString *element, NSUInteger idx, BOOL *stop) { - dataSize += computeStringSizeNoTag(element); - }]; - size_ += dataSize; - size_ += (SInt32)(1 * count); - } - if (self.hasAvatar) { - size_ += computeMessageSize(5, self.avatar); - } - size_ += self.unknownFields.serializedSize; - memoizedSerializedSize = size_; - return size_; -} -+ (PushMessageContentGroupContext *)parseFromData:(NSData *)data { - return (PushMessageContentGroupContext *)[[[PushMessageContentGroupContext builder] mergeFromData:data] build]; -} -+ (PushMessageContentGroupContext *)parseFromData:(NSData *)data - extensionRegistry:(PBExtensionRegistry *)extensionRegistry { - return (PushMessageContentGroupContext *)[ - [[PushMessageContentGroupContext builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; -} -+ (PushMessageContentGroupContext *)parseFromInputStream:(NSInputStream *)input { - return (PushMessageContentGroupContext *)[[[PushMessageContentGroupContext builder] mergeFromInputStream:input] - build]; -} -+ (PushMessageContentGroupContext *)parseFromInputStream:(NSInputStream *)input - extensionRegistry:(PBExtensionRegistry *)extensionRegistry { - return (PushMessageContentGroupContext *)[ - [[PushMessageContentGroupContext builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] - build]; -} -+ (PushMessageContentGroupContext *)parseFromCodedInputStream:(PBCodedInputStream *)input { - return (PushMessageContentGroupContext *)[[[PushMessageContentGroupContext builder] mergeFromCodedInputStream:input] - build]; -} -+ (PushMessageContentGroupContext *)parseFromCodedInputStream:(PBCodedInputStream *)input - extensionRegistry:(PBExtensionRegistry *)extensionRegistry { - return (PushMessageContentGroupContext *)[ - [[PushMessageContentGroupContext builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] - build]; -} -+ (PushMessageContentGroupContextBuilder *)builder { - return [[PushMessageContentGroupContextBuilder alloc] init]; -} -+ (PushMessageContentGroupContextBuilder *)builderWithPrototype:(PushMessageContentGroupContext *)prototype { - return [[PushMessageContentGroupContext builder] mergeFrom:prototype]; -} -- (PushMessageContentGroupContextBuilder *)builder { - return [PushMessageContentGroupContext builder]; -} -- (PushMessageContentGroupContextBuilder *)toBuilder { - return [PushMessageContentGroupContext builderWithPrototype:self]; -} -- (void)writeDescriptionTo:(NSMutableString *)output withIndent:(NSString *)indent { - if (self.hasId) { - [output appendFormat:@"%@%@: %@\n", indent, @"id", self.id]; - } - if (self.hasType) { - [output appendFormat:@"%@%@: %d\n", indent, @"type", self.type]; - } - if (self.hasName) { - [output appendFormat:@"%@%@: %@\n", indent, @"name", self.name]; - } - [self.membersArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { - [output appendFormat:@"%@%@: %@\n", indent, @"members", obj]; - }]; - if (self.hasAvatar) { - [output appendFormat:@"%@%@ {\n", indent, @"avatar"]; - [self.avatar writeDescriptionTo:output withIndent:[NSString stringWithFormat:@"%@ ", indent]]; - [output appendFormat:@"%@}\n", indent]; - } - [self.unknownFields writeDescriptionTo:output withIndent:indent]; -} -- (BOOL)isEqual:(id)other { - if (other == self) { - return YES; - } - if (![other isKindOfClass:[PushMessageContentGroupContext class]]) { - return NO; - } - PushMessageContentGroupContext *otherMessage = other; - return self.hasId == otherMessage.hasId && (!self.hasId || [self.id isEqual:otherMessage.id]) && - self.hasType == otherMessage.hasType && (!self.hasType || self.type == otherMessage.type) && - self.hasName == otherMessage.hasName && (!self.hasName || [self.name isEqual:otherMessage.name]) && - [self.membersArray isEqualToArray:otherMessage.membersArray] && self.hasAvatar == otherMessage.hasAvatar && - (!self.hasAvatar || [self.avatar isEqual:otherMessage.avatar]) && - (self.unknownFields == otherMessage.unknownFields || - (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); -} -- (NSUInteger)hash { - __block NSUInteger hashCode = 7; - if (self.hasId) { - hashCode = hashCode * 31 + [self.id hash]; - } - if (self.hasType) { - hashCode = hashCode * 31 + self.type; - } - if (self.hasName) { - hashCode = hashCode * 31 + [self.name hash]; - } - [self.membersArray enumerateObjectsUsingBlock:^(id element, NSUInteger idx, BOOL *stop) { - hashCode = hashCode * 31 + [element hash]; - }]; - if (self.hasAvatar) { - hashCode = hashCode * 31 + [self.avatar hash]; - } - hashCode = hashCode * 31 + [self.unknownFields hash]; - return hashCode; -} -@end - -BOOL PushMessageContentGroupContextTypeIsValidValue(PushMessageContentGroupContextType value) { - switch (value) { - case PushMessageContentGroupContextTypeUnknown: - case PushMessageContentGroupContextTypeUpdate: - case PushMessageContentGroupContextTypeDeliver: - case PushMessageContentGroupContextTypeQuit: - return YES; - default: - return NO; - } -} -@interface PushMessageContentGroupContextBuilder () -@property (strong) PushMessageContentGroupContext *result; -@end - -@implementation PushMessageContentGroupContextBuilder -@synthesize result; -- (id)init { - if ((self = [super init])) { - self.result = [[PushMessageContentGroupContext alloc] init]; - } - return self; -} -- (PBGeneratedMessage *)internalGetResult { - return result; -} -- (PushMessageContentGroupContextBuilder *)clear { - self.result = [[PushMessageContentGroupContext alloc] init]; - return self; -} -- (PushMessageContentGroupContextBuilder *)clone { - return [PushMessageContentGroupContext builderWithPrototype:result]; -} -- (PushMessageContentGroupContext *)defaultInstance { - return [PushMessageContentGroupContext defaultInstance]; -} -- (PushMessageContentGroupContext *)build { - [self checkInitialized]; - return [self buildPartial]; -} -- (PushMessageContentGroupContext *)buildPartial { - PushMessageContentGroupContext *returnMe = result; - self.result = nil; - return returnMe; -} -- (PushMessageContentGroupContextBuilder *)mergeFrom:(PushMessageContentGroupContext *)other { - if (other == [PushMessageContentGroupContext defaultInstance]) { - return self; - } - if (other.hasId) { - [self setId:other.id]; - } - if (other.hasType) { - [self setType:other.type]; - } - if (other.hasName) { - [self setName:other.name]; - } - if (other.membersArray.count > 0) { - if (result.membersArray == nil) { - result.membersArray = [[NSMutableArray alloc] initWithArray:other.membersArray]; - } else { - [result.membersArray addObjectsFromArray:other.membersArray]; - } - } - if (other.hasAvatar) { - [self mergeAvatar:other.avatar]; - } - [self mergeUnknownFields:other.unknownFields]; - return self; -} -- (PushMessageContentGroupContextBuilder *)mergeFromCodedInputStream:(PBCodedInputStream *)input { - return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; -} -- (PushMessageContentGroupContextBuilder *)mergeFromCodedInputStream:(PBCodedInputStream *)input - extensionRegistry:(PBExtensionRegistry *)extensionRegistry { - PBUnknownFieldSetBuilder *unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; - while (YES) { - SInt32 tag = [input readTag]; - switch (tag) { - case 0: - [self setUnknownFields:[unknownFields build]]; - return self; - default: { - if (![self parseUnknownField:input - unknownFields:unknownFields - extensionRegistry:extensionRegistry - tag:tag]) { - [self setUnknownFields:[unknownFields build]]; - return self; - } - break; - } - case 10: { - [self setId:[input readData]]; - break; - } - case 16: { - PushMessageContentGroupContextType value = (PushMessageContentGroupContextType)[input readEnum]; - if (PushMessageContentGroupContextTypeIsValidValue(value)) { - [self setType:value]; - } else { - [unknownFields mergeVarintField:2 value:value]; - } - break; - } - case 26: { - [self setName:[input readString]]; - break; - } - case 34: { - [self addMembers:[input readString]]; - break; - } - case 42: { - PushMessageContentAttachmentPointerBuilder *subBuilder = [PushMessageContentAttachmentPointer builder]; - if (self.hasAvatar) { - [subBuilder mergeFrom:self.avatar]; - } - [input readMessage:subBuilder extensionRegistry:extensionRegistry]; - [self setAvatar:[subBuilder buildPartial]]; - break; - } - } - } -} -- (BOOL)hasId { - return result.hasId; -} -- (NSData *)id { - return result.id; -} -- (PushMessageContentGroupContextBuilder *)setId:(NSData *)value { - result.hasId = YES; - result.id = value; - return self; -} -- (PushMessageContentGroupContextBuilder *)clearId { - result.hasId = NO; - result.id = [NSData data]; - return self; -} -- (BOOL)hasType { - return result.hasType; -} -- (PushMessageContentGroupContextType)type { - return result.type; -} -- (PushMessageContentGroupContextBuilder *)setType:(PushMessageContentGroupContextType)value { - result.hasType = YES; - result.type = value; - return self; -} -- (PushMessageContentGroupContextBuilder *)clearType { - result.hasType = NO; - result.type = PushMessageContentGroupContextTypeUnknown; - return self; -} -- (BOOL)hasName { - return result.hasName; -} -- (NSString *)name { - return result.name; -} -- (PushMessageContentGroupContextBuilder *)setName:(NSString *)value { - result.hasName = YES; - result.name = value; - return self; -} -- (PushMessageContentGroupContextBuilder *)clearName { - result.hasName = NO; - result.name = @""; - return self; -} -- (NSMutableArray *)members { - return result.membersArray; -} -- (NSString *)membersAtIndex:(NSUInteger)index { - return [result membersAtIndex:index]; -} -- (PushMessageContentGroupContextBuilder *)addMembers:(NSString *)value { - if (result.membersArray == nil) { - result.membersArray = [[NSMutableArray alloc] init]; - } - [result.membersArray addObject:value]; - return self; -} -- (PushMessageContentGroupContextBuilder *)setMembersArray:(NSArray *)array { - result.membersArray = [[NSMutableArray alloc] initWithArray:array]; - return self; -} -- (PushMessageContentGroupContextBuilder *)clearMembers { - result.membersArray = nil; - return self; -} -- (BOOL)hasAvatar { - return result.hasAvatar; -} -- (PushMessageContentAttachmentPointer *)avatar { - return result.avatar; -} -- (PushMessageContentGroupContextBuilder *)setAvatar:(PushMessageContentAttachmentPointer *)value { - result.hasAvatar = YES; - result.avatar = value; - return self; -} -- (PushMessageContentGroupContextBuilder *)setAvatarBuilder: - (PushMessageContentAttachmentPointerBuilder *)builderForValue { - return [self setAvatar:[builderForValue build]]; -} -- (PushMessageContentGroupContextBuilder *)mergeAvatar:(PushMessageContentAttachmentPointer *)value { - if (result.hasAvatar && result.avatar != [PushMessageContentAttachmentPointer defaultInstance]) { - result.avatar = - [[[PushMessageContentAttachmentPointer builderWithPrototype:result.avatar] mergeFrom:value] buildPartial]; - } else { - result.avatar = value; - } - result.hasAvatar = YES; - return self; -} -- (PushMessageContentGroupContextBuilder *)clearAvatar { - result.hasAvatar = NO; - result.avatar = [PushMessageContentAttachmentPointer defaultInstance]; - return self; -} -@end - -@interface PushMessageContentBuilder () -@property (strong) PushMessageContent *result; -@end - -@implementation PushMessageContentBuilder -@synthesize result; -- (id)init { - if ((self = [super init])) { - self.result = [[PushMessageContent alloc] init]; - } - return self; -} -- (PBGeneratedMessage *)internalGetResult { - return result; -} -- (PushMessageContentBuilder *)clear { - self.result = [[PushMessageContent alloc] init]; - return self; -} -- (PushMessageContentBuilder *)clone { - return [PushMessageContent builderWithPrototype:result]; -} -- (PushMessageContent *)defaultInstance { - return [PushMessageContent defaultInstance]; -} -- (PushMessageContent *)build { - [self checkInitialized]; - return [self buildPartial]; -} -- (PushMessageContent *)buildPartial { - PushMessageContent *returnMe = result; - self.result = nil; - return returnMe; -} -- (PushMessageContentBuilder *)mergeFrom:(PushMessageContent *)other { - if (other == [PushMessageContent defaultInstance]) { - return self; - } - if (other.hasBody) { - [self setBody:other.body]; - } - if (other.attachmentsArray.count > 0) { - if (result.attachmentsArray == nil) { - result.attachmentsArray = [[NSMutableArray alloc] initWithArray:other.attachmentsArray]; - } else { - [result.attachmentsArray addObjectsFromArray:other.attachmentsArray]; - } - } - if (other.hasGroup) { - [self mergeGroup:other.group]; - } - if (other.hasFlags) { - [self setFlags:other.flags]; - } - [self mergeUnknownFields:other.unknownFields]; - return self; -} -- (PushMessageContentBuilder *)mergeFromCodedInputStream:(PBCodedInputStream *)input { - return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; -} -- (PushMessageContentBuilder *)mergeFromCodedInputStream:(PBCodedInputStream *)input - extensionRegistry:(PBExtensionRegistry *)extensionRegistry { - PBUnknownFieldSetBuilder *unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; - while (YES) { - SInt32 tag = [input readTag]; - switch (tag) { - case 0: - [self setUnknownFields:[unknownFields build]]; - return self; - default: { - if (![self parseUnknownField:input - unknownFields:unknownFields - extensionRegistry:extensionRegistry - tag:tag]) { - [self setUnknownFields:[unknownFields build]]; - return self; - } - break; - } - case 10: { - [self setBody:[input readString]]; - break; - } - case 18: { - PushMessageContentAttachmentPointerBuilder *subBuilder = [PushMessageContentAttachmentPointer builder]; - [input readMessage:subBuilder extensionRegistry:extensionRegistry]; - [self addAttachments:[subBuilder buildPartial]]; - break; - } - case 26: { - PushMessageContentGroupContextBuilder *subBuilder = [PushMessageContentGroupContext builder]; - if (self.hasGroup) { - [subBuilder mergeFrom:self.group]; - } - [input readMessage:subBuilder extensionRegistry:extensionRegistry]; - [self setGroup:[subBuilder buildPartial]]; - break; - } - case 32: { - [self setFlags:[input readUInt32]]; - break; - } - } - } -} -- (BOOL)hasBody { - return result.hasBody; -} -- (NSString *)body { - return result.body; -} -- (PushMessageContentBuilder *)setBody:(NSString *)value { - result.hasBody = YES; - result.body = value; - return self; -} -- (PushMessageContentBuilder *)clearBody { - result.hasBody = NO; - result.body = @""; - return self; -} -- (NSMutableArray *)attachments { - return result.attachmentsArray; -} -- (PushMessageContentAttachmentPointer *)attachmentsAtIndex:(NSUInteger)index { - return [result attachmentsAtIndex:index]; -} -- (PushMessageContentBuilder *)addAttachments:(PushMessageContentAttachmentPointer *)value { - if (result.attachmentsArray == nil) { - result.attachmentsArray = [[NSMutableArray alloc] init]; - } - [result.attachmentsArray addObject:value]; - return self; -} -- (PushMessageContentBuilder *)setAttachmentsArray:(NSArray *)array { - result.attachmentsArray = [[NSMutableArray alloc] initWithArray:array]; - return self; -} -- (PushMessageContentBuilder *)clearAttachments { - result.attachmentsArray = nil; - return self; -} -- (BOOL)hasGroup { - return result.hasGroup; -} -- (PushMessageContentGroupContext *)group { - return result.group; -} -- (PushMessageContentBuilder *)setGroup:(PushMessageContentGroupContext *)value { - result.hasGroup = YES; - result.group = value; - return self; -} -- (PushMessageContentBuilder *)setGroupBuilder:(PushMessageContentGroupContextBuilder *)builderForValue { - return [self setGroup:[builderForValue build]]; -} -- (PushMessageContentBuilder *)mergeGroup:(PushMessageContentGroupContext *)value { - if (result.hasGroup && result.group != [PushMessageContentGroupContext defaultInstance]) { - result.group = - [[[PushMessageContentGroupContext builderWithPrototype:result.group] mergeFrom:value] buildPartial]; - } else { - result.group = value; - } - result.hasGroup = YES; - return self; -} -- (PushMessageContentBuilder *)clearGroup { - result.hasGroup = NO; - result.group = [PushMessageContentGroupContext defaultInstance]; - return self; -} -- (BOOL)hasFlags { - return result.hasFlags; -} -- (UInt32)flags { - return result.flags; -} -- (PushMessageContentBuilder *)setFlags:(UInt32)value { - result.hasFlags = YES; - result.flags = value; - return self; -} -- (PushMessageContentBuilder *)clearFlags { - result.hasFlags = NO; - result.flags = 0; - return self; -} -@end - - -// @@protoc_insertion_point(global_scope) diff --git a/src/Messages/Interactions/TSErrorMessage.h b/src/Messages/Interactions/TSErrorMessage.h index b930ec8..342e09b 100644 --- a/src/Messages/Interactions/TSErrorMessage.h +++ b/src/Messages/Interactions/TSErrorMessage.h @@ -1,12 +1,7 @@ -// -// TSErrorMessage.h -// TextSecureKit -// // Created by Frederic Jacobs on 12/11/14. // Copyright (c) 2014 Open Whisper Systems. All rights reserved. -// -#import "IncomingPushMessageSignal.pb.h" +#import "OWSSignalServiceProtos.pb.h" #import "TSMessage.h" @interface TSErrorMessage : TSMessage @@ -15,22 +10,23 @@ typedef NS_ENUM(int32_t, TSErrorMessageType) { TSErrorMessageNoSession, TSErrorMessageWrongTrustedIdentityKey, TSErrorMessageInvalidKeyException, - TSErrorMessageMissingKeyId, + TSErrorMessageMissingKeyId, // unused TSErrorMessageInvalidMessage, TSErrorMessageDuplicateMessage, TSErrorMessageInvalidVersion, }; -+ (instancetype)corruptedMessageWithSignal:(IncomingPushMessageSignal *)preKeyMessage ++ (instancetype)corruptedMessageWithEnvelope:(OWSSignalServiceProtosEnvelope *)envelope + withTransaction:(YapDatabaseReadWriteTransaction *)transaction; + ++ (instancetype)invalidVersionWithEnvelope:(OWSSignalServiceProtosEnvelope *)envelope + withTransaction:(YapDatabaseReadWriteTransaction *)transaction; + ++ (instancetype)invalidKeyExceptionWithEnvelope:(OWSSignalServiceProtosEnvelope *)envelope + withTransaction:(YapDatabaseReadWriteTransaction *)transaction; + ++ (instancetype)missingSessionWithEnvelope:(OWSSignalServiceProtosEnvelope *)envelope withTransaction:(YapDatabaseReadWriteTransaction *)transaction; -+ (instancetype)invalidVersionWithSignal:(IncomingPushMessageSignal *)preKeyMessage - withTransaction:(YapDatabaseReadWriteTransaction *)transaction; -+ (instancetype)missingKeyIdWithSignal:(IncomingPushMessageSignal *)preKeyMessage - withTransaction:(YapDatabaseReadWriteTransaction *)transaction; -+ (instancetype)invalidKeyExceptionWithSignal:(IncomingPushMessageSignal *)preKeyMessage - withTransaction:(YapDatabaseReadWriteTransaction *)transaction; -+ (instancetype)missingSessionWithSignal:(IncomingPushMessageSignal *)preKeyMessage - withTransaction:(YapDatabaseReadWriteTransaction *)transaction; @property (nonatomic, readonly) TSErrorMessageType errorType; diff --git a/src/Messages/Interactions/TSErrorMessage.m b/src/Messages/Interactions/TSErrorMessage.m index 990e47d..3e04996 100644 --- a/src/Messages/Interactions/TSErrorMessage.m +++ b/src/Messages/Interactions/TSErrorMessage.m @@ -31,21 +31,20 @@ return self; } -- (instancetype)initWithSignal:(IncomingPushMessageSignal *)signal - transaction:(YapDatabaseReadWriteTransaction *)transaction - failedMessageType:(TSErrorMessageType)errorMessageType { +- (instancetype)initWithEnvelope:(OWSSignalServiceProtosEnvelope *)envelope + withTransaction:(YapDatabaseReadWriteTransaction *)transaction + failedMessageType:(TSErrorMessageType)errorMessageType +{ TSContactThread *contactThread = - [TSContactThread getOrCreateThreadWithContactId:signal.source transaction:transaction]; + [TSContactThread getOrCreateThreadWithContactId:envelope.source transaction:transaction]; - return [self initWithTimestamp:signal.timestamp inThread:contactThread failedMessageType:errorMessageType]; + return [self initWithTimestamp:envelope.timestamp inThread:contactThread failedMessageType:errorMessageType]; } - (NSString *)description { switch (_errorType) { case TSErrorMessageNoSession: return NSLocalizedString(@"ERROR_MESSAGE_NO_SESSION", @""); - case TSErrorMessageMissingKeyId: - return NSLocalizedString(@"ERROR_MESSAGE_MISSING_KEY", @""); case TSErrorMessageInvalidMessage: return NSLocalizedString(@"ERROR_MESSAGE_INVALID_MESSAGE", @""); case TSErrorMessageInvalidVersion: @@ -62,31 +61,35 @@ } } -+ (instancetype)corruptedMessageWithSignal:(IncomingPushMessageSignal *)signal - withTransaction:(YapDatabaseReadWriteTransaction *)transaction { - return [[self alloc] initWithSignal:signal transaction:transaction failedMessageType:TSErrorMessageInvalidMessage]; ++ (instancetype)corruptedMessageWithEnvelope:(OWSSignalServiceProtosEnvelope *)envelope + withTransaction:(YapDatabaseReadWriteTransaction *)transaction +{ + return [[self alloc] initWithEnvelope:envelope + withTransaction:transaction + failedMessageType:TSErrorMessageInvalidMessage]; } -+ (instancetype)invalidVersionWithSignal:(IncomingPushMessageSignal *)signal - withTransaction:(YapDatabaseReadWriteTransaction *)transaction { - return [[self alloc] initWithSignal:signal transaction:transaction failedMessageType:TSErrorMessageInvalidVersion]; ++ (instancetype)invalidVersionWithEnvelope:(OWSSignalServiceProtosEnvelope *)envelope + withTransaction:(YapDatabaseReadWriteTransaction *)transaction +{ + return [[self alloc] initWithEnvelope:envelope + withTransaction:transaction + failedMessageType:TSErrorMessageInvalidVersion]; } -+ (instancetype)missingKeyIdWithSignal:(IncomingPushMessageSignal *)signal - withTransaction:(YapDatabaseReadWriteTransaction *)transaction { - return [[self alloc] initWithSignal:signal transaction:transaction failedMessageType:TSErrorMessageMissingKeyId]; ++ (instancetype)invalidKeyExceptionWithEnvelope:(OWSSignalServiceProtosEnvelope *)envelope + withTransaction:(YapDatabaseReadWriteTransaction *)transaction +{ + return [[self alloc] initWithEnvelope:envelope + withTransaction:transaction + failedMessageType:TSErrorMessageInvalidKeyException]; } -+ (instancetype)invalidKeyExceptionWithSignal:(IncomingPushMessageSignal *)signal - withTransaction:(YapDatabaseReadWriteTransaction *)transaction { - return [[self alloc] initWithSignal:signal - transaction:transaction - failedMessageType:TSErrorMessageInvalidKeyException]; -} - -+ (instancetype)missingSessionWithSignal:(IncomingPushMessageSignal *)signal - withTransaction:(YapDatabaseReadWriteTransaction *)transaction { - return [[self alloc] initWithSignal:signal transaction:transaction failedMessageType:TSErrorMessageNoSession]; ++ (instancetype)missingSessionWithEnvelope:(OWSSignalServiceProtosEnvelope *)envelope + withTransaction:(YapDatabaseReadWriteTransaction *)transaction +{ + return + [[self alloc] initWithEnvelope:envelope withTransaction:transaction failedMessageType:TSErrorMessageNoSession]; } @end diff --git a/src/Messages/Interactions/TSErrorMessage_privateConstructor.h b/src/Messages/Interactions/TSErrorMessage_privateConstructor.h index e108406..43ba58c 100644 --- a/src/Messages/Interactions/TSErrorMessage_privateConstructor.h +++ b/src/Messages/Interactions/TSErrorMessage_privateConstructor.h @@ -14,7 +14,7 @@ inThread:(TSThread *)thread failedMessageType:(TSErrorMessageType)errorMessageType NS_DESIGNATED_INITIALIZER; -@property NSData *pushSignal; +@property NSData *envelopeData; @property NSDictionary *pendingOutgoingMessage; diff --git a/src/Messages/Interactions/TSInteraction.h b/src/Messages/Interactions/TSInteraction.h index 10e0a53..16156b8 100644 --- a/src/Messages/Interactions/TSInteraction.h +++ b/src/Messages/Interactions/TSInteraction.h @@ -10,6 +10,7 @@ - (instancetype)initWithTimestamp:(uint64_t)timestamp inThread:(TSThread *)thread; @property (nonatomic, readonly) NSString *uniqueThreadId; +@property (nonatomic, readonly) TSThread *thread; @property (nonatomic, readonly) uint64_t timestamp; - (NSDate *)date; diff --git a/src/Messages/Interactions/TSInteraction.m b/src/Messages/Interactions/TSInteraction.m index b350bea..8eb32b5 100644 --- a/src/Messages/Interactions/TSInteraction.m +++ b/src/Messages/Interactions/TSInteraction.m @@ -8,17 +8,6 @@ @implementation TSInteraction -- (instancetype)initWithTimestamp:(uint64_t)timestamp inThread:(TSThread *)thread { - self = [super initWithUniqueId:nil]; - - if (self) { - _timestamp = timestamp; - _uniqueThreadId = thread.uniqueId; - } - - return self; -} - + (instancetype)interactionForTimestamp:(uint64_t)timestamp withTransaction:(YapDatabaseReadWriteTransaction *)transaction { __block int counter = 0; @@ -28,14 +17,14 @@ enumerateMessagesWithTimestamp:timestamp withBlock:^(NSString *collection, NSString *key, BOOL *stop) { - if (counter != 0) { - DDLogWarn(@"The database contains two colliding timestamps at: %lld.", timestamp); - return; - } + if (counter != 0) { + DDLogWarn(@"The database contains two colliding timestamps at: %lld.", timestamp); + return; + } - interaction = [TSInteraction fetchObjectWithUniqueID:key transaction:transaction]; + interaction = [TSInteraction fetchObjectWithUniqueID:key transaction:transaction]; - counter++; + counter++; } usingTransaction:transaction]; @@ -46,6 +35,25 @@ return @"TSInteraction"; } +- (instancetype)initWithTimestamp:(uint64_t)timestamp inThread:(TSThread *)thread +{ + self = [super initWithUniqueId:nil]; + + if (!self) { + return self; + } + + _timestamp = timestamp; + _uniqueThreadId = thread.uniqueId; + + return self; +} + +- (TSThread *)thread +{ + return [TSThread fetchObjectWithUniqueID:self.uniqueThreadId]; +} + #pragma mark Date operations - (uint64_t)millisecondsTimestamp { diff --git a/src/Messages/InvalidKeyMessages/TSInvalidIdentityKeyErrorMessage.h b/src/Messages/InvalidKeyMessages/TSInvalidIdentityKeyErrorMessage.h index 01bee9f..44a52f4 100644 --- a/src/Messages/InvalidKeyMessages/TSInvalidIdentityKeyErrorMessage.h +++ b/src/Messages/InvalidKeyMessages/TSInvalidIdentityKeyErrorMessage.h @@ -11,6 +11,6 @@ @interface TSInvalidIdentityKeyErrorMessage : TSErrorMessage - (void)acceptNewIdentityKey; -- (NSString *)newIdentityKey; +- (NSString *)newIdentityFingerprint; @end diff --git a/src/Messages/InvalidKeyMessages/TSInvalidIdentityKeyErrorMessage.m b/src/Messages/InvalidKeyMessages/TSInvalidIdentityKeyErrorMessage.m index d8952ca..b53ea3c 100644 --- a/src/Messages/InvalidKeyMessages/TSInvalidIdentityKeyErrorMessage.m +++ b/src/Messages/InvalidKeyMessages/TSInvalidIdentityKeyErrorMessage.m @@ -13,7 +13,8 @@ - (void)acceptNewIdentityKey { NSAssert(NO, @"Method needs to be implemented in subclasses of TSInvalidIdentityKeyErrorMessage."); } -- (NSString *)newIdentityKey { +- (NSString *)newIdentityFingerprint +{ NSAssert(NO, @"Method needs to be implemented in subclasses of TSInvalidIdentityKeyErrorMessage."); return nil; } diff --git a/src/Messages/InvalidKeyMessages/TSInvalidIdentityKeyReceivingErrorMessage.h b/src/Messages/InvalidKeyMessages/TSInvalidIdentityKeyReceivingErrorMessage.h index a64a837..b9f81c3 100644 --- a/src/Messages/InvalidKeyMessages/TSInvalidIdentityKeyReceivingErrorMessage.h +++ b/src/Messages/InvalidKeyMessages/TSInvalidIdentityKeyReceivingErrorMessage.h @@ -10,7 +10,8 @@ @interface TSInvalidIdentityKeyReceivingErrorMessage : TSInvalidIdentityKeyErrorMessage -+ (instancetype)untrustedKeyWithSignal:(IncomingPushMessageSignal *)preKeyMessage - withTransaction:(YapDatabaseReadWriteTransaction *)transaction; ++ (instancetype)untrustedKeyWithEnvelope:(OWSSignalServiceProtosEnvelope *)envelope + withTransaction:(YapDatabaseReadWriteTransaction *)transaction; +- (NSData *)newIdentityKey; @end diff --git a/src/Messages/InvalidKeyMessages/TSInvalidIdentityKeyReceivingErrorMessage.m b/src/Messages/InvalidKeyMessages/TSInvalidIdentityKeyReceivingErrorMessage.m index 153a2c3..0aed655 100644 --- a/src/Messages/InvalidKeyMessages/TSInvalidIdentityKeyReceivingErrorMessage.m +++ b/src/Messages/InvalidKeyMessages/TSInvalidIdentityKeyReceivingErrorMessage.m @@ -14,96 +14,103 @@ #import #import -@implementation TSInvalidIdentityKeyReceivingErrorMessage +@implementation TSInvalidIdentityKeyReceivingErrorMessage { + // Not using a property declaration in order to exclude from DB serialization + OWSSignalServiceProtosEnvelope *_envelope; +} + +@synthesize envelopeData = _envelopeData; + ++ (instancetype)untrustedKeyWithEnvelope:(OWSSignalServiceProtosEnvelope *)envelope + withTransaction:(YapDatabaseReadWriteTransaction *)transaction +{ + TSContactThread *contactThread = + [TSContactThread getOrCreateThreadWithContactId:envelope.source transaction:transaction]; + TSInvalidIdentityKeyReceivingErrorMessage *errorMessage = + [[self alloc] initForUnknownIdentityKeyWithTimestamp:envelope.timestamp + inThread:contactThread + incomingEnvelopeData:envelope.data]; + return errorMessage; +} - (instancetype)initForUnknownIdentityKeyWithTimestamp:(uint64_t)timestamp inThread:(TSThread *)thread - incomingPushSignal:(NSData *)signal { + incomingEnvelopeData:(NSData *)envelopeData +{ self = [self initWithTimestamp:timestamp inThread:thread failedMessageType:TSErrorMessageWrongTrustedIdentityKey]; - - if (self) { - self.pushSignal = signal; + if (!self) { + return self; } + _envelopeData = envelopeData; + return self; } -+ (instancetype)untrustedKeyWithSignal:(IncomingPushMessageSignal *)preKeyMessage - withTransaction:(YapDatabaseReadWriteTransaction *)transaction { - TSContactThread *contactThread = - [TSContactThread getOrCreateThreadWithContactId:preKeyMessage.source transaction:transaction]; - TSInvalidIdentityKeyReceivingErrorMessage *errorMessage = - [[self alloc] initForUnknownIdentityKeyWithTimestamp:preKeyMessage.timestamp - inThread:contactThread - incomingPushSignal:preKeyMessage.data]; - return errorMessage; +- (OWSSignalServiceProtosEnvelope *)envelope +{ + if (!_envelope) { + _envelope = [OWSSignalServiceProtosEnvelope parseFromData:self.envelopeData]; + } + return _envelope; } -- (void)acceptNewIdentityKey { - if (self.errorType != TSErrorMessageWrongTrustedIdentityKey || !self.pushSignal) { + +- (void)acceptNewIdentityKey +{ + if (self.errorType != TSErrorMessageWrongTrustedIdentityKey) { + DDLogError(@"Refusing to accept identity key for anything but a Key error."); return; } - TSStorageManager *storage = [TSStorageManager sharedManager]; - IncomingPushMessageSignal *signal = [IncomingPushMessageSignal parseFromData:self.pushSignal]; - PreKeyWhisperMessage *message = [[PreKeyWhisperMessage alloc] initWithData:signal.message]; - NSData *newKey = [message.identityKey removeKeyType]; + NSData *newKey = [self newIdentityKey]; + if (!newKey) { + DDLogError(@"Couldn't extract identity key to accept"); + return; + } - [storage saveRemoteIdentity:newKey recipientId:signal.source]; - - [[TSMessagesManager sharedManager] handleMessageSignal:signal]; - - __block NSMutableSet *messagesToDecrypt = [NSMutableSet set]; - - [[TSStorageManager sharedManager] - .dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { - [[transaction ext:TSMessageDatabaseViewExtensionName] - enumerateKeysAndObjectsInGroup:self.uniqueThreadId - withOptions:NSEnumerationReverse - usingBlock:^( - NSString *collection, NSString *key, id object, NSUInteger index, BOOL *stop) { - TSInteraction *interaction = (TSInteraction *)object; - - DDLogVerbose(@"Interaction type: %@", interaction.debugDescription); - - if ([interaction isKindOfClass:[TSInvalidIdentityKeyErrorMessage class]]) { - TSInvalidIdentityKeyErrorMessage *invalidKeyMessage = - (TSInvalidIdentityKeyReceivingErrorMessage *)interaction; - IncomingPushMessageSignal *invalidMessageSignal = - [IncomingPushMessageSignal parseFromData:invalidKeyMessage.pushSignal]; - PreKeyWhisperMessage *pkwm = - [[PreKeyWhisperMessage alloc] initWithData:invalidMessageSignal.message]; - NSData *newKeyCandidate = [pkwm.identityKey removeKeyType]; - - if ([newKeyCandidate isEqualToData:newKey]) { - [messagesToDecrypt addObject:invalidKeyMessage]; - } - } - }]; - }]; + [[TSStorageManager sharedManager] saveRemoteIdentity:newKey recipientId:self.envelope.source]; + // Decrypt this and any old messages for the newly accepted key + NSArray *messagesToDecrypt = + [self.thread receivedMessagesForInvalidKey:newKey]; for (TSInvalidIdentityKeyReceivingErrorMessage *errorMessage in messagesToDecrypt) { - [[TSMessagesManager sharedManager] - handleMessageSignal:[IncomingPushMessageSignal parseFromData:errorMessage.pushSignal]]; + [[TSMessagesManager sharedManager] handleReceivedEnvelope:errorMessage.envelope]; - [[TSStorageManager sharedManager] - .dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { - [errorMessage removeWithTransaction:transaction]; - }]; + // Here we remove the existing error message because handleReceivedEnvelope will either + // 1.) succeed and create a new successful message in the thread or... + // 2.) fail and create a new identical error message in the thread. + [errorMessage remove]; } } -- (NSString *)newIdentityKey { - if (!self.pushSignal) { - return @""; +- (NSData *)newIdentityKey +{ + if (!self.envelope) { + DDLogError(@"Error message had no envelope data to extract key from"); + return nil; } - IncomingPushMessageSignal *signal = [IncomingPushMessageSignal parseFromData:self.pushSignal]; - PreKeyWhisperMessage *message = [[PreKeyWhisperMessage alloc] initWithData:signal.message]; - NSData *identityKey = [message.identityKey removeKeyType]; + if (self.envelope.type != OWSSignalServiceProtosEnvelopeTypePrekeyBundle) { + DDLogError(@"Refusing to attempt key extraction from an envelope which isn't a prekey bundle"); + return nil; + } - return [TSFingerprintGenerator getFingerprintForDisplay:identityKey]; + // DEPRECATED - Remove after all clients have been upgraded. + NSData *pkwmData = self.envelope.hasContent ? self.envelope.content : self.envelope.legacyMessage; + if (!pkwmData) { + DDLogError(@"Ignoring acceptNewIdentityKey for empty message"); + return nil; + } + + PreKeyWhisperMessage *message = [[PreKeyWhisperMessage alloc] initWithData:pkwmData]; + return [message.identityKey removeKeyType]; +} + +- (NSString *)newIdentityFingerprint +{ + return [TSFingerprintGenerator getFingerprintForDisplay:[self newIdentityKey]]; } @end diff --git a/src/Messages/InvalidKeyMessages/TSInvalidIdentityKeySendingErrorMessage.m b/src/Messages/InvalidKeyMessages/TSInvalidIdentityKeySendingErrorMessage.m index 9e278a4..24a8fd6 100644 --- a/src/Messages/InvalidKeyMessages/TSInvalidIdentityKeySendingErrorMessage.m +++ b/src/Messages/InvalidKeyMessages/TSInvalidIdentityKeySendingErrorMessage.m @@ -95,7 +95,8 @@ } } -- (NSString *)newIdentityKey { +- (NSString *)newIdentityFingerprint +{ NSData *identityKey = [self newKey]; return [TSFingerprintGenerator getFingerprintForDisplay:identityKey]; diff --git a/src/Messages/OWSSignalServiceProtos.pb.h b/src/Messages/OWSSignalServiceProtos.pb.h new file mode 100644 index 0000000..59432d0 --- /dev/null +++ b/src/Messages/OWSSignalServiceProtos.pb.h @@ -0,0 +1,1234 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! + +#import + +// @@protoc_insertion_point(imports) + +@class OWSSignalServiceProtosAttachmentPointer; +@class OWSSignalServiceProtosAttachmentPointerBuilder; +@class OWSSignalServiceProtosContactDetails; +@class OWSSignalServiceProtosContactDetailsAvatar; +@class OWSSignalServiceProtosContactDetailsAvatarBuilder; +@class OWSSignalServiceProtosContactDetailsBuilder; +@class OWSSignalServiceProtosContent; +@class OWSSignalServiceProtosContentBuilder; +@class OWSSignalServiceProtosDataMessage; +@class OWSSignalServiceProtosDataMessageBuilder; +@class OWSSignalServiceProtosEnvelope; +@class OWSSignalServiceProtosEnvelopeBuilder; +@class OWSSignalServiceProtosGroupContext; +@class OWSSignalServiceProtosGroupContextBuilder; +@class OWSSignalServiceProtosGroupDetails; +@class OWSSignalServiceProtosGroupDetailsAvatar; +@class OWSSignalServiceProtosGroupDetailsAvatarBuilder; +@class OWSSignalServiceProtosGroupDetailsBuilder; +@class OWSSignalServiceProtosSyncMessage; +@class OWSSignalServiceProtosSyncMessageBuilder; +@class OWSSignalServiceProtosSyncMessageContacts; +@class OWSSignalServiceProtosSyncMessageContactsBuilder; +@class OWSSignalServiceProtosSyncMessageGroups; +@class OWSSignalServiceProtosSyncMessageGroupsBuilder; +@class OWSSignalServiceProtosSyncMessageRead; +@class OWSSignalServiceProtosSyncMessageReadBuilder; +@class OWSSignalServiceProtosSyncMessageRequest; +@class OWSSignalServiceProtosSyncMessageRequestBuilder; +@class OWSSignalServiceProtosSyncMessageSent; +@class OWSSignalServiceProtosSyncMessageSentBuilder; +@class ObjectiveCFileOptions; +@class ObjectiveCFileOptionsBuilder; +@class PBDescriptorProto; +@class PBDescriptorProtoBuilder; +@class PBDescriptorProtoExtensionRange; +@class PBDescriptorProtoExtensionRangeBuilder; +@class PBEnumDescriptorProto; +@class PBEnumDescriptorProtoBuilder; +@class PBEnumOptions; +@class PBEnumOptionsBuilder; +@class PBEnumValueDescriptorProto; +@class PBEnumValueDescriptorProtoBuilder; +@class PBEnumValueOptions; +@class PBEnumValueOptionsBuilder; +@class PBFieldDescriptorProto; +@class PBFieldDescriptorProtoBuilder; +@class PBFieldOptions; +@class PBFieldOptionsBuilder; +@class PBFileDescriptorProto; +@class PBFileDescriptorProtoBuilder; +@class PBFileDescriptorSet; +@class PBFileDescriptorSetBuilder; +@class PBFileOptions; +@class PBFileOptionsBuilder; +@class PBMessageOptions; +@class PBMessageOptionsBuilder; +@class PBMethodDescriptorProto; +@class PBMethodDescriptorProtoBuilder; +@class PBMethodOptions; +@class PBMethodOptionsBuilder; +@class PBOneofDescriptorProto; +@class PBOneofDescriptorProtoBuilder; +@class PBServiceDescriptorProto; +@class PBServiceDescriptorProtoBuilder; +@class PBServiceOptions; +@class PBServiceOptionsBuilder; +@class PBSourceCodeInfo; +@class PBSourceCodeInfoBuilder; +@class PBSourceCodeInfoLocation; +@class PBSourceCodeInfoLocationBuilder; +@class PBUninterpretedOption; +@class PBUninterpretedOptionBuilder; +@class PBUninterpretedOptionNamePart; +@class PBUninterpretedOptionNamePartBuilder; + + +typedef NS_ENUM(SInt32, OWSSignalServiceProtosEnvelopeType) { + OWSSignalServiceProtosEnvelopeTypeUnknown = 0, + OWSSignalServiceProtosEnvelopeTypeCiphertext = 1, + OWSSignalServiceProtosEnvelopeTypeKeyExchange = 2, + OWSSignalServiceProtosEnvelopeTypePrekeyBundle = 3, + OWSSignalServiceProtosEnvelopeTypeReceipt = 5, +}; + +BOOL OWSSignalServiceProtosEnvelopeTypeIsValidValue(OWSSignalServiceProtosEnvelopeType value); +NSString *NSStringFromOWSSignalServiceProtosEnvelopeType(OWSSignalServiceProtosEnvelopeType value); + +typedef NS_ENUM(SInt32, OWSSignalServiceProtosDataMessageFlags) { + OWSSignalServiceProtosDataMessageFlagsEndSession = 1, +}; + +BOOL OWSSignalServiceProtosDataMessageFlagsIsValidValue(OWSSignalServiceProtosDataMessageFlags value); +NSString *NSStringFromOWSSignalServiceProtosDataMessageFlags(OWSSignalServiceProtosDataMessageFlags value); + +typedef NS_ENUM(SInt32, OWSSignalServiceProtosSyncMessageRequestType) { + OWSSignalServiceProtosSyncMessageRequestTypeUnknown = 0, + OWSSignalServiceProtosSyncMessageRequestTypeContacts = 1, + OWSSignalServiceProtosSyncMessageRequestTypeGroups = 2, +}; + +BOOL OWSSignalServiceProtosSyncMessageRequestTypeIsValidValue(OWSSignalServiceProtosSyncMessageRequestType value); +NSString *NSStringFromOWSSignalServiceProtosSyncMessageRequestType(OWSSignalServiceProtosSyncMessageRequestType value); + +typedef NS_ENUM(SInt32, OWSSignalServiceProtosGroupContextType) { + OWSSignalServiceProtosGroupContextTypeUnknown = 0, + OWSSignalServiceProtosGroupContextTypeUpdate = 1, + OWSSignalServiceProtosGroupContextTypeDeliver = 2, + OWSSignalServiceProtosGroupContextTypeQuit = 3, +}; + +BOOL OWSSignalServiceProtosGroupContextTypeIsValidValue(OWSSignalServiceProtosGroupContextType value); +NSString *NSStringFromOWSSignalServiceProtosGroupContextType(OWSSignalServiceProtosGroupContextType value); + + +@interface OWSSignalServiceProtosOwssignalServiceProtosRoot : NSObject { +} ++ (PBExtensionRegistry*) extensionRegistry; ++ (void) registerAllExtensions:(PBMutableExtensionRegistry*) registry; +@end + +#define Envelope_type @"type" +#define Envelope_source @"source" +#define Envelope_sourceDevice @"sourceDevice" +#define Envelope_relay @"relay" +#define Envelope_timestamp @"timestamp" +#define Envelope_legacyMessage @"legacyMessage" +#define Envelope_content @"content" +@interface OWSSignalServiceProtosEnvelope : PBGeneratedMessage { +@private + BOOL hasTimestamp_:1; + BOOL hasSource_:1; + BOOL hasRelay_:1; + BOOL hasLegacyMessage_:1; + BOOL hasContent_:1; + BOOL hasSourceDevice_:1; + BOOL hasType_:1; + UInt64 timestamp; + NSString* source; + NSString* relay; + NSData* legacyMessage; + NSData* content; + UInt32 sourceDevice; + OWSSignalServiceProtosEnvelopeType type; +} +- (BOOL) hasType; +- (BOOL) hasSource; +- (BOOL) hasSourceDevice; +- (BOOL) hasRelay; +- (BOOL) hasTimestamp; +- (BOOL) hasLegacyMessage; +- (BOOL) hasContent; +@property (readonly) OWSSignalServiceProtosEnvelopeType type; +@property (readonly, strong) NSString* source; +@property (readonly) UInt32 sourceDevice; +@property (readonly, strong) NSString* relay; +@property (readonly) UInt64 timestamp; +@property (readonly, strong) NSData* legacyMessage; +@property (readonly, strong) NSData* content; + ++ (instancetype) defaultInstance; +- (instancetype) defaultInstance; + +- (BOOL) isInitialized; +- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output; +- (OWSSignalServiceProtosEnvelopeBuilder*) builder; ++ (OWSSignalServiceProtosEnvelopeBuilder*) builder; ++ (OWSSignalServiceProtosEnvelopeBuilder*) builderWithPrototype:(OWSSignalServiceProtosEnvelope*) prototype; +- (OWSSignalServiceProtosEnvelopeBuilder*) toBuilder; + ++ (OWSSignalServiceProtosEnvelope*) parseFromData:(NSData*) data; ++ (OWSSignalServiceProtosEnvelope*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry; ++ (OWSSignalServiceProtosEnvelope*) parseFromInputStream:(NSInputStream*) input; ++ (OWSSignalServiceProtosEnvelope*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; ++ (OWSSignalServiceProtosEnvelope*) parseFromCodedInputStream:(PBCodedInputStream*) input; ++ (OWSSignalServiceProtosEnvelope*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; +@end + +@interface OWSSignalServiceProtosEnvelopeBuilder : PBGeneratedMessageBuilder { +@private + OWSSignalServiceProtosEnvelope* resultEnvelope; +} + +- (OWSSignalServiceProtosEnvelope*) defaultInstance; + +- (OWSSignalServiceProtosEnvelopeBuilder*) clear; +- (OWSSignalServiceProtosEnvelopeBuilder*) clone; + +- (OWSSignalServiceProtosEnvelope*) build; +- (OWSSignalServiceProtosEnvelope*) buildPartial; + +- (OWSSignalServiceProtosEnvelopeBuilder*) mergeFrom:(OWSSignalServiceProtosEnvelope*) other; +- (OWSSignalServiceProtosEnvelopeBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input; +- (OWSSignalServiceProtosEnvelopeBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; + +- (BOOL) hasType; +- (OWSSignalServiceProtosEnvelopeType) type; +- (OWSSignalServiceProtosEnvelopeBuilder*) setType:(OWSSignalServiceProtosEnvelopeType) value; +- (OWSSignalServiceProtosEnvelopeBuilder*) clearType; + +- (BOOL) hasSource; +- (NSString*) source; +- (OWSSignalServiceProtosEnvelopeBuilder*) setSource:(NSString*) value; +- (OWSSignalServiceProtosEnvelopeBuilder*) clearSource; + +- (BOOL) hasSourceDevice; +- (UInt32) sourceDevice; +- (OWSSignalServiceProtosEnvelopeBuilder*) setSourceDevice:(UInt32) value; +- (OWSSignalServiceProtosEnvelopeBuilder*) clearSourceDevice; + +- (BOOL) hasRelay; +- (NSString*) relay; +- (OWSSignalServiceProtosEnvelopeBuilder*) setRelay:(NSString*) value; +- (OWSSignalServiceProtosEnvelopeBuilder*) clearRelay; + +- (BOOL) hasTimestamp; +- (UInt64) timestamp; +- (OWSSignalServiceProtosEnvelopeBuilder*) setTimestamp:(UInt64) value; +- (OWSSignalServiceProtosEnvelopeBuilder*) clearTimestamp; + +- (BOOL) hasLegacyMessage; +- (NSData*) legacyMessage; +- (OWSSignalServiceProtosEnvelopeBuilder*) setLegacyMessage:(NSData*) value; +- (OWSSignalServiceProtosEnvelopeBuilder*) clearLegacyMessage; + +- (BOOL) hasContent; +- (NSData*) content; +- (OWSSignalServiceProtosEnvelopeBuilder*) setContent:(NSData*) value; +- (OWSSignalServiceProtosEnvelopeBuilder*) clearContent; +@end + +#define Content_dataMessage @"dataMessage" +#define Content_syncMessage @"syncMessage" +@interface OWSSignalServiceProtosContent : PBGeneratedMessage { +@private + BOOL hasDataMessage_:1; + BOOL hasSyncMessage_:1; + OWSSignalServiceProtosDataMessage* dataMessage; + OWSSignalServiceProtosSyncMessage* syncMessage; +} +- (BOOL) hasDataMessage; +- (BOOL) hasSyncMessage; +@property (readonly, strong) OWSSignalServiceProtosDataMessage* dataMessage; +@property (readonly, strong) OWSSignalServiceProtosSyncMessage* syncMessage; + ++ (instancetype) defaultInstance; +- (instancetype) defaultInstance; + +- (BOOL) isInitialized; +- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output; +- (OWSSignalServiceProtosContentBuilder*) builder; ++ (OWSSignalServiceProtosContentBuilder*) builder; ++ (OWSSignalServiceProtosContentBuilder*) builderWithPrototype:(OWSSignalServiceProtosContent*) prototype; +- (OWSSignalServiceProtosContentBuilder*) toBuilder; + ++ (OWSSignalServiceProtosContent*) parseFromData:(NSData*) data; ++ (OWSSignalServiceProtosContent*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry; ++ (OWSSignalServiceProtosContent*) parseFromInputStream:(NSInputStream*) input; ++ (OWSSignalServiceProtosContent*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; ++ (OWSSignalServiceProtosContent*) parseFromCodedInputStream:(PBCodedInputStream*) input; ++ (OWSSignalServiceProtosContent*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; +@end + +@interface OWSSignalServiceProtosContentBuilder : PBGeneratedMessageBuilder { +@private + OWSSignalServiceProtosContent* resultContent; +} + +- (OWSSignalServiceProtosContent*) defaultInstance; + +- (OWSSignalServiceProtosContentBuilder*) clear; +- (OWSSignalServiceProtosContentBuilder*) clone; + +- (OWSSignalServiceProtosContent*) build; +- (OWSSignalServiceProtosContent*) buildPartial; + +- (OWSSignalServiceProtosContentBuilder*) mergeFrom:(OWSSignalServiceProtosContent*) other; +- (OWSSignalServiceProtosContentBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input; +- (OWSSignalServiceProtosContentBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; + +- (BOOL) hasDataMessage; +- (OWSSignalServiceProtosDataMessage*) dataMessage; +- (OWSSignalServiceProtosContentBuilder*) setDataMessage:(OWSSignalServiceProtosDataMessage*) value; +- (OWSSignalServiceProtosContentBuilder*) setDataMessageBuilder:(OWSSignalServiceProtosDataMessageBuilder*) builderForValue; +- (OWSSignalServiceProtosContentBuilder*) mergeDataMessage:(OWSSignalServiceProtosDataMessage*) value; +- (OWSSignalServiceProtosContentBuilder*) clearDataMessage; + +- (BOOL) hasSyncMessage; +- (OWSSignalServiceProtosSyncMessage*) syncMessage; +- (OWSSignalServiceProtosContentBuilder*) setSyncMessage:(OWSSignalServiceProtosSyncMessage*) value; +- (OWSSignalServiceProtosContentBuilder*) setSyncMessageBuilder:(OWSSignalServiceProtosSyncMessageBuilder*) builderForValue; +- (OWSSignalServiceProtosContentBuilder*) mergeSyncMessage:(OWSSignalServiceProtosSyncMessage*) value; +- (OWSSignalServiceProtosContentBuilder*) clearSyncMessage; +@end + +#define DataMessage_body @"body" +#define DataMessage_attachments @"attachments" +#define DataMessage_group @"group" +#define DataMessage_flags @"flags" +@interface OWSSignalServiceProtosDataMessage : PBGeneratedMessage { +@private + BOOL hasBody_:1; + BOOL hasGroup_:1; + BOOL hasFlags_:1; + NSString* body; + OWSSignalServiceProtosGroupContext* group; + UInt32 flags; + NSMutableArray * attachmentsArray; +} +- (BOOL) hasBody; +- (BOOL) hasGroup; +- (BOOL) hasFlags; +@property (readonly, strong) NSString* body; +@property (readonly, strong) NSArray * attachments; +@property (readonly, strong) OWSSignalServiceProtosGroupContext* group; +@property (readonly) UInt32 flags; +- (OWSSignalServiceProtosAttachmentPointer*)attachmentsAtIndex:(NSUInteger)index; + ++ (instancetype) defaultInstance; +- (instancetype) defaultInstance; + +- (BOOL) isInitialized; +- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output; +- (OWSSignalServiceProtosDataMessageBuilder*) builder; ++ (OWSSignalServiceProtosDataMessageBuilder*) builder; ++ (OWSSignalServiceProtosDataMessageBuilder*) builderWithPrototype:(OWSSignalServiceProtosDataMessage*) prototype; +- (OWSSignalServiceProtosDataMessageBuilder*) toBuilder; + ++ (OWSSignalServiceProtosDataMessage*) parseFromData:(NSData*) data; ++ (OWSSignalServiceProtosDataMessage*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry; ++ (OWSSignalServiceProtosDataMessage*) parseFromInputStream:(NSInputStream*) input; ++ (OWSSignalServiceProtosDataMessage*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; ++ (OWSSignalServiceProtosDataMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input; ++ (OWSSignalServiceProtosDataMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; +@end + +@interface OWSSignalServiceProtosDataMessageBuilder : PBGeneratedMessageBuilder { +@private + OWSSignalServiceProtosDataMessage* resultDataMessage; +} + +- (OWSSignalServiceProtosDataMessage*) defaultInstance; + +- (OWSSignalServiceProtosDataMessageBuilder*) clear; +- (OWSSignalServiceProtosDataMessageBuilder*) clone; + +- (OWSSignalServiceProtosDataMessage*) build; +- (OWSSignalServiceProtosDataMessage*) buildPartial; + +- (OWSSignalServiceProtosDataMessageBuilder*) mergeFrom:(OWSSignalServiceProtosDataMessage*) other; +- (OWSSignalServiceProtosDataMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input; +- (OWSSignalServiceProtosDataMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; + +- (BOOL) hasBody; +- (NSString*) body; +- (OWSSignalServiceProtosDataMessageBuilder*) setBody:(NSString*) value; +- (OWSSignalServiceProtosDataMessageBuilder*) clearBody; + +- (NSMutableArray *)attachments; +- (OWSSignalServiceProtosAttachmentPointer*)attachmentsAtIndex:(NSUInteger)index; +- (OWSSignalServiceProtosDataMessageBuilder *)addAttachments:(OWSSignalServiceProtosAttachmentPointer*)value; +- (OWSSignalServiceProtosDataMessageBuilder *)setAttachmentsArray:(NSArray *)array; +- (OWSSignalServiceProtosDataMessageBuilder *)clearAttachments; + +- (BOOL) hasGroup; +- (OWSSignalServiceProtosGroupContext*) group; +- (OWSSignalServiceProtosDataMessageBuilder*) setGroup:(OWSSignalServiceProtosGroupContext*) value; +- (OWSSignalServiceProtosDataMessageBuilder*) setGroupBuilder:(OWSSignalServiceProtosGroupContextBuilder*) builderForValue; +- (OWSSignalServiceProtosDataMessageBuilder*) mergeGroup:(OWSSignalServiceProtosGroupContext*) value; +- (OWSSignalServiceProtosDataMessageBuilder*) clearGroup; + +- (BOOL) hasFlags; +- (UInt32) flags; +- (OWSSignalServiceProtosDataMessageBuilder*) setFlags:(UInt32) value; +- (OWSSignalServiceProtosDataMessageBuilder*) clearFlags; +@end + +#define SyncMessage_sent @"sent" +#define SyncMessage_contacts @"contacts" +#define SyncMessage_groups @"groups" +#define SyncMessage_request @"request" +#define SyncMessage_read @"read" +@interface OWSSignalServiceProtosSyncMessage : PBGeneratedMessage { +@private + BOOL hasSent_:1; + BOOL hasContacts_:1; + BOOL hasGroups_:1; + BOOL hasRequest_:1; + OWSSignalServiceProtosSyncMessageSent* sent; + OWSSignalServiceProtosSyncMessageContacts* contacts; + OWSSignalServiceProtosSyncMessageGroups* groups; + OWSSignalServiceProtosSyncMessageRequest* request; + NSMutableArray * readArray; +} +- (BOOL) hasSent; +- (BOOL) hasContacts; +- (BOOL) hasGroups; +- (BOOL) hasRequest; +@property (readonly, strong) OWSSignalServiceProtosSyncMessageSent* sent; +@property (readonly, strong) OWSSignalServiceProtosSyncMessageContacts* contacts; +@property (readonly, strong) OWSSignalServiceProtosSyncMessageGroups* groups; +@property (readonly, strong) OWSSignalServiceProtosSyncMessageRequest* request; +@property (readonly, strong) NSArray * read; +- (OWSSignalServiceProtosSyncMessageRead*)readAtIndex:(NSUInteger)index; + ++ (instancetype) defaultInstance; +- (instancetype) defaultInstance; + +- (BOOL) isInitialized; +- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output; +- (OWSSignalServiceProtosSyncMessageBuilder*) builder; ++ (OWSSignalServiceProtosSyncMessageBuilder*) builder; ++ (OWSSignalServiceProtosSyncMessageBuilder*) builderWithPrototype:(OWSSignalServiceProtosSyncMessage*) prototype; +- (OWSSignalServiceProtosSyncMessageBuilder*) toBuilder; + ++ (OWSSignalServiceProtosSyncMessage*) parseFromData:(NSData*) data; ++ (OWSSignalServiceProtosSyncMessage*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry; ++ (OWSSignalServiceProtosSyncMessage*) parseFromInputStream:(NSInputStream*) input; ++ (OWSSignalServiceProtosSyncMessage*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; ++ (OWSSignalServiceProtosSyncMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input; ++ (OWSSignalServiceProtosSyncMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; +@end + +#define Sent_destination @"destination" +#define Sent_timestamp @"timestamp" +#define Sent_message @"message" +@interface OWSSignalServiceProtosSyncMessageSent : PBGeneratedMessage { +@private + BOOL hasTimestamp_:1; + BOOL hasDestination_:1; + BOOL hasMessage_:1; + UInt64 timestamp; + NSString* destination; + OWSSignalServiceProtosDataMessage* message; +} +- (BOOL) hasDestination; +- (BOOL) hasTimestamp; +- (BOOL) hasMessage; +@property (readonly, strong) NSString* destination; +@property (readonly) UInt64 timestamp; +@property (readonly, strong) OWSSignalServiceProtosDataMessage* message; + ++ (instancetype) defaultInstance; +- (instancetype) defaultInstance; + +- (BOOL) isInitialized; +- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output; +- (OWSSignalServiceProtosSyncMessageSentBuilder*) builder; ++ (OWSSignalServiceProtosSyncMessageSentBuilder*) builder; ++ (OWSSignalServiceProtosSyncMessageSentBuilder*) builderWithPrototype:(OWSSignalServiceProtosSyncMessageSent*) prototype; +- (OWSSignalServiceProtosSyncMessageSentBuilder*) toBuilder; + ++ (OWSSignalServiceProtosSyncMessageSent*) parseFromData:(NSData*) data; ++ (OWSSignalServiceProtosSyncMessageSent*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry; ++ (OWSSignalServiceProtosSyncMessageSent*) parseFromInputStream:(NSInputStream*) input; ++ (OWSSignalServiceProtosSyncMessageSent*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; ++ (OWSSignalServiceProtosSyncMessageSent*) parseFromCodedInputStream:(PBCodedInputStream*) input; ++ (OWSSignalServiceProtosSyncMessageSent*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; +@end + +@interface OWSSignalServiceProtosSyncMessageSentBuilder : PBGeneratedMessageBuilder { +@private + OWSSignalServiceProtosSyncMessageSent* resultSent; +} + +- (OWSSignalServiceProtosSyncMessageSent*) defaultInstance; + +- (OWSSignalServiceProtosSyncMessageSentBuilder*) clear; +- (OWSSignalServiceProtosSyncMessageSentBuilder*) clone; + +- (OWSSignalServiceProtosSyncMessageSent*) build; +- (OWSSignalServiceProtosSyncMessageSent*) buildPartial; + +- (OWSSignalServiceProtosSyncMessageSentBuilder*) mergeFrom:(OWSSignalServiceProtosSyncMessageSent*) other; +- (OWSSignalServiceProtosSyncMessageSentBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input; +- (OWSSignalServiceProtosSyncMessageSentBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; + +- (BOOL) hasDestination; +- (NSString*) destination; +- (OWSSignalServiceProtosSyncMessageSentBuilder*) setDestination:(NSString*) value; +- (OWSSignalServiceProtosSyncMessageSentBuilder*) clearDestination; + +- (BOOL) hasTimestamp; +- (UInt64) timestamp; +- (OWSSignalServiceProtosSyncMessageSentBuilder*) setTimestamp:(UInt64) value; +- (OWSSignalServiceProtosSyncMessageSentBuilder*) clearTimestamp; + +- (BOOL) hasMessage; +- (OWSSignalServiceProtosDataMessage*) message; +- (OWSSignalServiceProtosSyncMessageSentBuilder*) setMessage:(OWSSignalServiceProtosDataMessage*) value; +- (OWSSignalServiceProtosSyncMessageSentBuilder*) setMessageBuilder:(OWSSignalServiceProtosDataMessageBuilder*) builderForValue; +- (OWSSignalServiceProtosSyncMessageSentBuilder*) mergeMessage:(OWSSignalServiceProtosDataMessage*) value; +- (OWSSignalServiceProtosSyncMessageSentBuilder*) clearMessage; +@end + +#define Contacts_blob @"blob" +@interface OWSSignalServiceProtosSyncMessageContacts : PBGeneratedMessage { +@private + BOOL hasBlob_:1; + OWSSignalServiceProtosAttachmentPointer* blob; +} +- (BOOL) hasBlob; +@property (readonly, strong) OWSSignalServiceProtosAttachmentPointer* blob; + ++ (instancetype) defaultInstance; +- (instancetype) defaultInstance; + +- (BOOL) isInitialized; +- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output; +- (OWSSignalServiceProtosSyncMessageContactsBuilder*) builder; ++ (OWSSignalServiceProtosSyncMessageContactsBuilder*) builder; ++ (OWSSignalServiceProtosSyncMessageContactsBuilder*) builderWithPrototype:(OWSSignalServiceProtosSyncMessageContacts*) prototype; +- (OWSSignalServiceProtosSyncMessageContactsBuilder*) toBuilder; + ++ (OWSSignalServiceProtosSyncMessageContacts*) parseFromData:(NSData*) data; ++ (OWSSignalServiceProtosSyncMessageContacts*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry; ++ (OWSSignalServiceProtosSyncMessageContacts*) parseFromInputStream:(NSInputStream*) input; ++ (OWSSignalServiceProtosSyncMessageContacts*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; ++ (OWSSignalServiceProtosSyncMessageContacts*) parseFromCodedInputStream:(PBCodedInputStream*) input; ++ (OWSSignalServiceProtosSyncMessageContacts*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; +@end + +@interface OWSSignalServiceProtosSyncMessageContactsBuilder : PBGeneratedMessageBuilder { +@private + OWSSignalServiceProtosSyncMessageContacts* resultContacts; +} + +- (OWSSignalServiceProtosSyncMessageContacts*) defaultInstance; + +- (OWSSignalServiceProtosSyncMessageContactsBuilder*) clear; +- (OWSSignalServiceProtosSyncMessageContactsBuilder*) clone; + +- (OWSSignalServiceProtosSyncMessageContacts*) build; +- (OWSSignalServiceProtosSyncMessageContacts*) buildPartial; + +- (OWSSignalServiceProtosSyncMessageContactsBuilder*) mergeFrom:(OWSSignalServiceProtosSyncMessageContacts*) other; +- (OWSSignalServiceProtosSyncMessageContactsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input; +- (OWSSignalServiceProtosSyncMessageContactsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; + +- (BOOL) hasBlob; +- (OWSSignalServiceProtosAttachmentPointer*) blob; +- (OWSSignalServiceProtosSyncMessageContactsBuilder*) setBlob:(OWSSignalServiceProtosAttachmentPointer*) value; +- (OWSSignalServiceProtosSyncMessageContactsBuilder*) setBlobBuilder:(OWSSignalServiceProtosAttachmentPointerBuilder*) builderForValue; +- (OWSSignalServiceProtosSyncMessageContactsBuilder*) mergeBlob:(OWSSignalServiceProtosAttachmentPointer*) value; +- (OWSSignalServiceProtosSyncMessageContactsBuilder*) clearBlob; +@end + +#define Groups_blob @"blob" +@interface OWSSignalServiceProtosSyncMessageGroups : PBGeneratedMessage { +@private + BOOL hasBlob_:1; + OWSSignalServiceProtosAttachmentPointer* blob; +} +- (BOOL) hasBlob; +@property (readonly, strong) OWSSignalServiceProtosAttachmentPointer* blob; + ++ (instancetype) defaultInstance; +- (instancetype) defaultInstance; + +- (BOOL) isInitialized; +- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output; +- (OWSSignalServiceProtosSyncMessageGroupsBuilder*) builder; ++ (OWSSignalServiceProtosSyncMessageGroupsBuilder*) builder; ++ (OWSSignalServiceProtosSyncMessageGroupsBuilder*) builderWithPrototype:(OWSSignalServiceProtosSyncMessageGroups*) prototype; +- (OWSSignalServiceProtosSyncMessageGroupsBuilder*) toBuilder; + ++ (OWSSignalServiceProtosSyncMessageGroups*) parseFromData:(NSData*) data; ++ (OWSSignalServiceProtosSyncMessageGroups*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry; ++ (OWSSignalServiceProtosSyncMessageGroups*) parseFromInputStream:(NSInputStream*) input; ++ (OWSSignalServiceProtosSyncMessageGroups*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; ++ (OWSSignalServiceProtosSyncMessageGroups*) parseFromCodedInputStream:(PBCodedInputStream*) input; ++ (OWSSignalServiceProtosSyncMessageGroups*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; +@end + +@interface OWSSignalServiceProtosSyncMessageGroupsBuilder : PBGeneratedMessageBuilder { +@private + OWSSignalServiceProtosSyncMessageGroups* resultGroups; +} + +- (OWSSignalServiceProtosSyncMessageGroups*) defaultInstance; + +- (OWSSignalServiceProtosSyncMessageGroupsBuilder*) clear; +- (OWSSignalServiceProtosSyncMessageGroupsBuilder*) clone; + +- (OWSSignalServiceProtosSyncMessageGroups*) build; +- (OWSSignalServiceProtosSyncMessageGroups*) buildPartial; + +- (OWSSignalServiceProtosSyncMessageGroupsBuilder*) mergeFrom:(OWSSignalServiceProtosSyncMessageGroups*) other; +- (OWSSignalServiceProtosSyncMessageGroupsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input; +- (OWSSignalServiceProtosSyncMessageGroupsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; + +- (BOOL) hasBlob; +- (OWSSignalServiceProtosAttachmentPointer*) blob; +- (OWSSignalServiceProtosSyncMessageGroupsBuilder*) setBlob:(OWSSignalServiceProtosAttachmentPointer*) value; +- (OWSSignalServiceProtosSyncMessageGroupsBuilder*) setBlobBuilder:(OWSSignalServiceProtosAttachmentPointerBuilder*) builderForValue; +- (OWSSignalServiceProtosSyncMessageGroupsBuilder*) mergeBlob:(OWSSignalServiceProtosAttachmentPointer*) value; +- (OWSSignalServiceProtosSyncMessageGroupsBuilder*) clearBlob; +@end + +#define Request_type @"type" +@interface OWSSignalServiceProtosSyncMessageRequest : PBGeneratedMessage { +@private + BOOL hasType_:1; + OWSSignalServiceProtosSyncMessageRequestType type; +} +- (BOOL) hasType; +@property (readonly) OWSSignalServiceProtosSyncMessageRequestType type; + ++ (instancetype) defaultInstance; +- (instancetype) defaultInstance; + +- (BOOL) isInitialized; +- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output; +- (OWSSignalServiceProtosSyncMessageRequestBuilder*) builder; ++ (OWSSignalServiceProtosSyncMessageRequestBuilder*) builder; ++ (OWSSignalServiceProtosSyncMessageRequestBuilder*) builderWithPrototype:(OWSSignalServiceProtosSyncMessageRequest*) prototype; +- (OWSSignalServiceProtosSyncMessageRequestBuilder*) toBuilder; + ++ (OWSSignalServiceProtosSyncMessageRequest*) parseFromData:(NSData*) data; ++ (OWSSignalServiceProtosSyncMessageRequest*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry; ++ (OWSSignalServiceProtosSyncMessageRequest*) parseFromInputStream:(NSInputStream*) input; ++ (OWSSignalServiceProtosSyncMessageRequest*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; ++ (OWSSignalServiceProtosSyncMessageRequest*) parseFromCodedInputStream:(PBCodedInputStream*) input; ++ (OWSSignalServiceProtosSyncMessageRequest*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; +@end + +@interface OWSSignalServiceProtosSyncMessageRequestBuilder : PBGeneratedMessageBuilder { +@private + OWSSignalServiceProtosSyncMessageRequest* resultRequest; +} + +- (OWSSignalServiceProtosSyncMessageRequest*) defaultInstance; + +- (OWSSignalServiceProtosSyncMessageRequestBuilder*) clear; +- (OWSSignalServiceProtosSyncMessageRequestBuilder*) clone; + +- (OWSSignalServiceProtosSyncMessageRequest*) build; +- (OWSSignalServiceProtosSyncMessageRequest*) buildPartial; + +- (OWSSignalServiceProtosSyncMessageRequestBuilder*) mergeFrom:(OWSSignalServiceProtosSyncMessageRequest*) other; +- (OWSSignalServiceProtosSyncMessageRequestBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input; +- (OWSSignalServiceProtosSyncMessageRequestBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; + +- (BOOL) hasType; +- (OWSSignalServiceProtosSyncMessageRequestType) type; +- (OWSSignalServiceProtosSyncMessageRequestBuilder*) setType:(OWSSignalServiceProtosSyncMessageRequestType) value; +- (OWSSignalServiceProtosSyncMessageRequestBuilder*) clearType; +@end + +#define Read_sender @"sender" +#define Read_timestamp @"timestamp" +@interface OWSSignalServiceProtosSyncMessageRead : PBGeneratedMessage { +@private + BOOL hasTimestamp_:1; + BOOL hasSender_:1; + UInt64 timestamp; + NSString* sender; +} +- (BOOL) hasSender; +- (BOOL) hasTimestamp; +@property (readonly, strong) NSString* sender; +@property (readonly) UInt64 timestamp; + ++ (instancetype) defaultInstance; +- (instancetype) defaultInstance; + +- (BOOL) isInitialized; +- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output; +- (OWSSignalServiceProtosSyncMessageReadBuilder*) builder; ++ (OWSSignalServiceProtosSyncMessageReadBuilder*) builder; ++ (OWSSignalServiceProtosSyncMessageReadBuilder*) builderWithPrototype:(OWSSignalServiceProtosSyncMessageRead*) prototype; +- (OWSSignalServiceProtosSyncMessageReadBuilder*) toBuilder; + ++ (OWSSignalServiceProtosSyncMessageRead*) parseFromData:(NSData*) data; ++ (OWSSignalServiceProtosSyncMessageRead*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry; ++ (OWSSignalServiceProtosSyncMessageRead*) parseFromInputStream:(NSInputStream*) input; ++ (OWSSignalServiceProtosSyncMessageRead*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; ++ (OWSSignalServiceProtosSyncMessageRead*) parseFromCodedInputStream:(PBCodedInputStream*) input; ++ (OWSSignalServiceProtosSyncMessageRead*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; +@end + +@interface OWSSignalServiceProtosSyncMessageReadBuilder : PBGeneratedMessageBuilder { +@private + OWSSignalServiceProtosSyncMessageRead* resultRead; +} + +- (OWSSignalServiceProtosSyncMessageRead*) defaultInstance; + +- (OWSSignalServiceProtosSyncMessageReadBuilder*) clear; +- (OWSSignalServiceProtosSyncMessageReadBuilder*) clone; + +- (OWSSignalServiceProtosSyncMessageRead*) build; +- (OWSSignalServiceProtosSyncMessageRead*) buildPartial; + +- (OWSSignalServiceProtosSyncMessageReadBuilder*) mergeFrom:(OWSSignalServiceProtosSyncMessageRead*) other; +- (OWSSignalServiceProtosSyncMessageReadBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input; +- (OWSSignalServiceProtosSyncMessageReadBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; + +- (BOOL) hasSender; +- (NSString*) sender; +- (OWSSignalServiceProtosSyncMessageReadBuilder*) setSender:(NSString*) value; +- (OWSSignalServiceProtosSyncMessageReadBuilder*) clearSender; + +- (BOOL) hasTimestamp; +- (UInt64) timestamp; +- (OWSSignalServiceProtosSyncMessageReadBuilder*) setTimestamp:(UInt64) value; +- (OWSSignalServiceProtosSyncMessageReadBuilder*) clearTimestamp; +@end + +@interface OWSSignalServiceProtosSyncMessageBuilder : PBGeneratedMessageBuilder { +@private + OWSSignalServiceProtosSyncMessage* resultSyncMessage; +} + +- (OWSSignalServiceProtosSyncMessage*) defaultInstance; + +- (OWSSignalServiceProtosSyncMessageBuilder*) clear; +- (OWSSignalServiceProtosSyncMessageBuilder*) clone; + +- (OWSSignalServiceProtosSyncMessage*) build; +- (OWSSignalServiceProtosSyncMessage*) buildPartial; + +- (OWSSignalServiceProtosSyncMessageBuilder*) mergeFrom:(OWSSignalServiceProtosSyncMessage*) other; +- (OWSSignalServiceProtosSyncMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input; +- (OWSSignalServiceProtosSyncMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; + +- (BOOL) hasSent; +- (OWSSignalServiceProtosSyncMessageSent*) sent; +- (OWSSignalServiceProtosSyncMessageBuilder*) setSent:(OWSSignalServiceProtosSyncMessageSent*) value; +- (OWSSignalServiceProtosSyncMessageBuilder*) setSentBuilder:(OWSSignalServiceProtosSyncMessageSentBuilder*) builderForValue; +- (OWSSignalServiceProtosSyncMessageBuilder*) mergeSent:(OWSSignalServiceProtosSyncMessageSent*) value; +- (OWSSignalServiceProtosSyncMessageBuilder*) clearSent; + +- (BOOL) hasContacts; +- (OWSSignalServiceProtosSyncMessageContacts*) contacts; +- (OWSSignalServiceProtosSyncMessageBuilder*) setContacts:(OWSSignalServiceProtosSyncMessageContacts*) value; +- (OWSSignalServiceProtosSyncMessageBuilder*) setContactsBuilder:(OWSSignalServiceProtosSyncMessageContactsBuilder*) builderForValue; +- (OWSSignalServiceProtosSyncMessageBuilder*) mergeContacts:(OWSSignalServiceProtosSyncMessageContacts*) value; +- (OWSSignalServiceProtosSyncMessageBuilder*) clearContacts; + +- (BOOL) hasGroups; +- (OWSSignalServiceProtosSyncMessageGroups*) groups; +- (OWSSignalServiceProtosSyncMessageBuilder*) setGroups:(OWSSignalServiceProtosSyncMessageGroups*) value; +- (OWSSignalServiceProtosSyncMessageBuilder*) setGroupsBuilder:(OWSSignalServiceProtosSyncMessageGroupsBuilder*) builderForValue; +- (OWSSignalServiceProtosSyncMessageBuilder*) mergeGroups:(OWSSignalServiceProtosSyncMessageGroups*) value; +- (OWSSignalServiceProtosSyncMessageBuilder*) clearGroups; + +- (BOOL) hasRequest; +- (OWSSignalServiceProtosSyncMessageRequest*) request; +- (OWSSignalServiceProtosSyncMessageBuilder*) setRequest:(OWSSignalServiceProtosSyncMessageRequest*) value; +- (OWSSignalServiceProtosSyncMessageBuilder*) setRequestBuilder:(OWSSignalServiceProtosSyncMessageRequestBuilder*) builderForValue; +- (OWSSignalServiceProtosSyncMessageBuilder*) mergeRequest:(OWSSignalServiceProtosSyncMessageRequest*) value; +- (OWSSignalServiceProtosSyncMessageBuilder*) clearRequest; + +- (NSMutableArray *)read; +- (OWSSignalServiceProtosSyncMessageRead*)readAtIndex:(NSUInteger)index; +- (OWSSignalServiceProtosSyncMessageBuilder *)addRead:(OWSSignalServiceProtosSyncMessageRead*)value; +- (OWSSignalServiceProtosSyncMessageBuilder *)setReadArray:(NSArray *)array; +- (OWSSignalServiceProtosSyncMessageBuilder *)clearRead; +@end + +#define AttachmentPointer_id @"id" +#define AttachmentPointer_contentType @"contentType" +#define AttachmentPointer_key @"key" +#define AttachmentPointer_size @"size" +#define AttachmentPointer_thumbnail @"thumbnail" +@interface OWSSignalServiceProtosAttachmentPointer : PBGeneratedMessage { +@private + BOOL hasId_:1; + BOOL hasContentType_:1; + BOOL hasKey_:1; + BOOL hasThumbnail_:1; + BOOL hasSize_:1; + UInt64 id; + NSString* contentType; + NSData* key; + NSData* thumbnail; + UInt32 size; +} +- (BOOL) hasId; +- (BOOL) hasContentType; +- (BOOL) hasKey; +- (BOOL) hasSize; +- (BOOL) hasThumbnail; +@property (readonly) UInt64 id; +@property (readonly, strong) NSString* contentType; +@property (readonly, strong) NSData* key; +@property (readonly) UInt32 size; +@property (readonly, strong) NSData* thumbnail; + ++ (instancetype) defaultInstance; +- (instancetype) defaultInstance; + +- (BOOL) isInitialized; +- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output; +- (OWSSignalServiceProtosAttachmentPointerBuilder*) builder; ++ (OWSSignalServiceProtosAttachmentPointerBuilder*) builder; ++ (OWSSignalServiceProtosAttachmentPointerBuilder*) builderWithPrototype:(OWSSignalServiceProtosAttachmentPointer*) prototype; +- (OWSSignalServiceProtosAttachmentPointerBuilder*) toBuilder; + ++ (OWSSignalServiceProtosAttachmentPointer*) parseFromData:(NSData*) data; ++ (OWSSignalServiceProtosAttachmentPointer*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry; ++ (OWSSignalServiceProtosAttachmentPointer*) parseFromInputStream:(NSInputStream*) input; ++ (OWSSignalServiceProtosAttachmentPointer*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; ++ (OWSSignalServiceProtosAttachmentPointer*) parseFromCodedInputStream:(PBCodedInputStream*) input; ++ (OWSSignalServiceProtosAttachmentPointer*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; +@end + +@interface OWSSignalServiceProtosAttachmentPointerBuilder : PBGeneratedMessageBuilder { +@private + OWSSignalServiceProtosAttachmentPointer* resultAttachmentPointer; +} + +- (OWSSignalServiceProtosAttachmentPointer*) defaultInstance; + +- (OWSSignalServiceProtosAttachmentPointerBuilder*) clear; +- (OWSSignalServiceProtosAttachmentPointerBuilder*) clone; + +- (OWSSignalServiceProtosAttachmentPointer*) build; +- (OWSSignalServiceProtosAttachmentPointer*) buildPartial; + +- (OWSSignalServiceProtosAttachmentPointerBuilder*) mergeFrom:(OWSSignalServiceProtosAttachmentPointer*) other; +- (OWSSignalServiceProtosAttachmentPointerBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input; +- (OWSSignalServiceProtosAttachmentPointerBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; + +- (BOOL) hasId; +- (UInt64) id; +- (OWSSignalServiceProtosAttachmentPointerBuilder*) setId:(UInt64) value; +- (OWSSignalServiceProtosAttachmentPointerBuilder*) clearId; + +- (BOOL) hasContentType; +- (NSString*) contentType; +- (OWSSignalServiceProtosAttachmentPointerBuilder*) setContentType:(NSString*) value; +- (OWSSignalServiceProtosAttachmentPointerBuilder*) clearContentType; + +- (BOOL) hasKey; +- (NSData*) key; +- (OWSSignalServiceProtosAttachmentPointerBuilder*) setKey:(NSData*) value; +- (OWSSignalServiceProtosAttachmentPointerBuilder*) clearKey; + +- (BOOL) hasSize; +- (UInt32) size; +- (OWSSignalServiceProtosAttachmentPointerBuilder*) setSize:(UInt32) value; +- (OWSSignalServiceProtosAttachmentPointerBuilder*) clearSize; + +- (BOOL) hasThumbnail; +- (NSData*) thumbnail; +- (OWSSignalServiceProtosAttachmentPointerBuilder*) setThumbnail:(NSData*) value; +- (OWSSignalServiceProtosAttachmentPointerBuilder*) clearThumbnail; +@end + +#define GroupContext_id @"id" +#define GroupContext_type @"type" +#define GroupContext_name @"name" +#define GroupContext_members @"members" +#define GroupContext_avatar @"avatar" +@interface OWSSignalServiceProtosGroupContext : PBGeneratedMessage { +@private + BOOL hasName_:1; + BOOL hasAvatar_:1; + BOOL hasId_:1; + BOOL hasType_:1; + NSString* name; + OWSSignalServiceProtosAttachmentPointer* avatar; + NSData* id; + OWSSignalServiceProtosGroupContextType type; + NSMutableArray * membersArray; +} +- (BOOL) hasId; +- (BOOL) hasType; +- (BOOL) hasName; +- (BOOL) hasAvatar; +@property (readonly, strong) NSData* id; +@property (readonly) OWSSignalServiceProtosGroupContextType type; +@property (readonly, strong) NSString* name; +@property (readonly, strong) NSArray * members; +@property (readonly, strong) OWSSignalServiceProtosAttachmentPointer* avatar; +- (NSString*)membersAtIndex:(NSUInteger)index; + ++ (instancetype) defaultInstance; +- (instancetype) defaultInstance; + +- (BOOL) isInitialized; +- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output; +- (OWSSignalServiceProtosGroupContextBuilder*) builder; ++ (OWSSignalServiceProtosGroupContextBuilder*) builder; ++ (OWSSignalServiceProtosGroupContextBuilder*) builderWithPrototype:(OWSSignalServiceProtosGroupContext*) prototype; +- (OWSSignalServiceProtosGroupContextBuilder*) toBuilder; + ++ (OWSSignalServiceProtosGroupContext*) parseFromData:(NSData*) data; ++ (OWSSignalServiceProtosGroupContext*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry; ++ (OWSSignalServiceProtosGroupContext*) parseFromInputStream:(NSInputStream*) input; ++ (OWSSignalServiceProtosGroupContext*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; ++ (OWSSignalServiceProtosGroupContext*) parseFromCodedInputStream:(PBCodedInputStream*) input; ++ (OWSSignalServiceProtosGroupContext*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; +@end + +@interface OWSSignalServiceProtosGroupContextBuilder : PBGeneratedMessageBuilder { +@private + OWSSignalServiceProtosGroupContext* resultGroupContext; +} + +- (OWSSignalServiceProtosGroupContext*) defaultInstance; + +- (OWSSignalServiceProtosGroupContextBuilder*) clear; +- (OWSSignalServiceProtosGroupContextBuilder*) clone; + +- (OWSSignalServiceProtosGroupContext*) build; +- (OWSSignalServiceProtosGroupContext*) buildPartial; + +- (OWSSignalServiceProtosGroupContextBuilder*) mergeFrom:(OWSSignalServiceProtosGroupContext*) other; +- (OWSSignalServiceProtosGroupContextBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input; +- (OWSSignalServiceProtosGroupContextBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; + +- (BOOL) hasId; +- (NSData*) id; +- (OWSSignalServiceProtosGroupContextBuilder*) setId:(NSData*) value; +- (OWSSignalServiceProtosGroupContextBuilder*) clearId; + +- (BOOL) hasType; +- (OWSSignalServiceProtosGroupContextType) type; +- (OWSSignalServiceProtosGroupContextBuilder*) setType:(OWSSignalServiceProtosGroupContextType) value; +- (OWSSignalServiceProtosGroupContextBuilder*) clearType; + +- (BOOL) hasName; +- (NSString*) name; +- (OWSSignalServiceProtosGroupContextBuilder*) setName:(NSString*) value; +- (OWSSignalServiceProtosGroupContextBuilder*) clearName; + +- (NSMutableArray *)members; +- (NSString*)membersAtIndex:(NSUInteger)index; +- (OWSSignalServiceProtosGroupContextBuilder *)addMembers:(NSString*)value; +- (OWSSignalServiceProtosGroupContextBuilder *)setMembersArray:(NSArray *)array; +- (OWSSignalServiceProtosGroupContextBuilder *)clearMembers; + +- (BOOL) hasAvatar; +- (OWSSignalServiceProtosAttachmentPointer*) avatar; +- (OWSSignalServiceProtosGroupContextBuilder*) setAvatar:(OWSSignalServiceProtosAttachmentPointer*) value; +- (OWSSignalServiceProtosGroupContextBuilder*) setAvatarBuilder:(OWSSignalServiceProtosAttachmentPointerBuilder*) builderForValue; +- (OWSSignalServiceProtosGroupContextBuilder*) mergeAvatar:(OWSSignalServiceProtosAttachmentPointer*) value; +- (OWSSignalServiceProtosGroupContextBuilder*) clearAvatar; +@end + +#define ContactDetails_number @"number" +#define ContactDetails_name @"name" +#define ContactDetails_avatar @"avatar" +@interface OWSSignalServiceProtosContactDetails : PBGeneratedMessage { +@private + BOOL hasNumber_:1; + BOOL hasName_:1; + BOOL hasAvatar_:1; + NSString* number; + NSString* name; + OWSSignalServiceProtosContactDetailsAvatar* avatar; +} +- (BOOL) hasNumber; +- (BOOL) hasName; +- (BOOL) hasAvatar; +@property (readonly, strong) NSString* number; +@property (readonly, strong) NSString* name; +@property (readonly, strong) OWSSignalServiceProtosContactDetailsAvatar* avatar; + ++ (instancetype) defaultInstance; +- (instancetype) defaultInstance; + +- (BOOL) isInitialized; +- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output; +- (OWSSignalServiceProtosContactDetailsBuilder*) builder; ++ (OWSSignalServiceProtosContactDetailsBuilder*) builder; ++ (OWSSignalServiceProtosContactDetailsBuilder*) builderWithPrototype:(OWSSignalServiceProtosContactDetails*) prototype; +- (OWSSignalServiceProtosContactDetailsBuilder*) toBuilder; + ++ (OWSSignalServiceProtosContactDetails*) parseFromData:(NSData*) data; ++ (OWSSignalServiceProtosContactDetails*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry; ++ (OWSSignalServiceProtosContactDetails*) parseFromInputStream:(NSInputStream*) input; ++ (OWSSignalServiceProtosContactDetails*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; ++ (OWSSignalServiceProtosContactDetails*) parseFromCodedInputStream:(PBCodedInputStream*) input; ++ (OWSSignalServiceProtosContactDetails*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; +@end + +#define Avatar_contentType @"contentType" +#define Avatar_length @"length" +@interface OWSSignalServiceProtosContactDetailsAvatar : PBGeneratedMessage { +@private + BOOL hasContentType_:1; + BOOL hasLength_:1; + NSString* contentType; + UInt32 length; +} +- (BOOL) hasContentType; +- (BOOL) hasLength; +@property (readonly, strong) NSString* contentType; +@property (readonly) UInt32 length; + ++ (instancetype) defaultInstance; +- (instancetype) defaultInstance; + +- (BOOL) isInitialized; +- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output; +- (OWSSignalServiceProtosContactDetailsAvatarBuilder*) builder; ++ (OWSSignalServiceProtosContactDetailsAvatarBuilder*) builder; ++ (OWSSignalServiceProtosContactDetailsAvatarBuilder*) builderWithPrototype:(OWSSignalServiceProtosContactDetailsAvatar*) prototype; +- (OWSSignalServiceProtosContactDetailsAvatarBuilder*) toBuilder; + ++ (OWSSignalServiceProtosContactDetailsAvatar*) parseFromData:(NSData*) data; ++ (OWSSignalServiceProtosContactDetailsAvatar*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry; ++ (OWSSignalServiceProtosContactDetailsAvatar*) parseFromInputStream:(NSInputStream*) input; ++ (OWSSignalServiceProtosContactDetailsAvatar*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; ++ (OWSSignalServiceProtosContactDetailsAvatar*) parseFromCodedInputStream:(PBCodedInputStream*) input; ++ (OWSSignalServiceProtosContactDetailsAvatar*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; +@end + +@interface OWSSignalServiceProtosContactDetailsAvatarBuilder : PBGeneratedMessageBuilder { +@private + OWSSignalServiceProtosContactDetailsAvatar* resultAvatar; +} + +- (OWSSignalServiceProtosContactDetailsAvatar*) defaultInstance; + +- (OWSSignalServiceProtosContactDetailsAvatarBuilder*) clear; +- (OWSSignalServiceProtosContactDetailsAvatarBuilder*) clone; + +- (OWSSignalServiceProtosContactDetailsAvatar*) build; +- (OWSSignalServiceProtosContactDetailsAvatar*) buildPartial; + +- (OWSSignalServiceProtosContactDetailsAvatarBuilder*) mergeFrom:(OWSSignalServiceProtosContactDetailsAvatar*) other; +- (OWSSignalServiceProtosContactDetailsAvatarBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input; +- (OWSSignalServiceProtosContactDetailsAvatarBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; + +- (BOOL) hasContentType; +- (NSString*) contentType; +- (OWSSignalServiceProtosContactDetailsAvatarBuilder*) setContentType:(NSString*) value; +- (OWSSignalServiceProtosContactDetailsAvatarBuilder*) clearContentType; + +- (BOOL) hasLength; +- (UInt32) length; +- (OWSSignalServiceProtosContactDetailsAvatarBuilder*) setLength:(UInt32) value; +- (OWSSignalServiceProtosContactDetailsAvatarBuilder*) clearLength; +@end + +@interface OWSSignalServiceProtosContactDetailsBuilder : PBGeneratedMessageBuilder { +@private + OWSSignalServiceProtosContactDetails* resultContactDetails; +} + +- (OWSSignalServiceProtosContactDetails*) defaultInstance; + +- (OWSSignalServiceProtosContactDetailsBuilder*) clear; +- (OWSSignalServiceProtosContactDetailsBuilder*) clone; + +- (OWSSignalServiceProtosContactDetails*) build; +- (OWSSignalServiceProtosContactDetails*) buildPartial; + +- (OWSSignalServiceProtosContactDetailsBuilder*) mergeFrom:(OWSSignalServiceProtosContactDetails*) other; +- (OWSSignalServiceProtosContactDetailsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input; +- (OWSSignalServiceProtosContactDetailsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; + +- (BOOL) hasNumber; +- (NSString*) number; +- (OWSSignalServiceProtosContactDetailsBuilder*) setNumber:(NSString*) value; +- (OWSSignalServiceProtosContactDetailsBuilder*) clearNumber; + +- (BOOL) hasName; +- (NSString*) name; +- (OWSSignalServiceProtosContactDetailsBuilder*) setName:(NSString*) value; +- (OWSSignalServiceProtosContactDetailsBuilder*) clearName; + +- (BOOL) hasAvatar; +- (OWSSignalServiceProtosContactDetailsAvatar*) avatar; +- (OWSSignalServiceProtosContactDetailsBuilder*) setAvatar:(OWSSignalServiceProtosContactDetailsAvatar*) value; +- (OWSSignalServiceProtosContactDetailsBuilder*) setAvatarBuilder:(OWSSignalServiceProtosContactDetailsAvatarBuilder*) builderForValue; +- (OWSSignalServiceProtosContactDetailsBuilder*) mergeAvatar:(OWSSignalServiceProtosContactDetailsAvatar*) value; +- (OWSSignalServiceProtosContactDetailsBuilder*) clearAvatar; +@end + +#define GroupDetails_id @"id" +#define GroupDetails_name @"name" +#define GroupDetails_members @"members" +#define GroupDetails_avatar @"avatar" +#define GroupDetails_active @"active" +@interface OWSSignalServiceProtosGroupDetails : PBGeneratedMessage { +@private + BOOL hasActive_:1; + BOOL hasName_:1; + BOOL hasAvatar_:1; + BOOL hasId_:1; + BOOL active_:1; + NSString* name; + OWSSignalServiceProtosGroupDetailsAvatar* avatar; + NSData* id; + NSMutableArray * membersArray; +} +- (BOOL) hasId; +- (BOOL) hasName; +- (BOOL) hasAvatar; +- (BOOL) hasActive; +@property (readonly, strong) NSData* id; +@property (readonly, strong) NSString* name; +@property (readonly, strong) NSArray * members; +@property (readonly, strong) OWSSignalServiceProtosGroupDetailsAvatar* avatar; +- (BOOL) active; +- (NSString*)membersAtIndex:(NSUInteger)index; + ++ (instancetype) defaultInstance; +- (instancetype) defaultInstance; + +- (BOOL) isInitialized; +- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output; +- (OWSSignalServiceProtosGroupDetailsBuilder*) builder; ++ (OWSSignalServiceProtosGroupDetailsBuilder*) builder; ++ (OWSSignalServiceProtosGroupDetailsBuilder*) builderWithPrototype:(OWSSignalServiceProtosGroupDetails*) prototype; +- (OWSSignalServiceProtosGroupDetailsBuilder*) toBuilder; + ++ (OWSSignalServiceProtosGroupDetails*) parseFromData:(NSData*) data; ++ (OWSSignalServiceProtosGroupDetails*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry; ++ (OWSSignalServiceProtosGroupDetails*) parseFromInputStream:(NSInputStream*) input; ++ (OWSSignalServiceProtosGroupDetails*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; ++ (OWSSignalServiceProtosGroupDetails*) parseFromCodedInputStream:(PBCodedInputStream*) input; ++ (OWSSignalServiceProtosGroupDetails*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; +@end + +#define Avatar_contentType @"contentType" +#define Avatar_length @"length" +@interface OWSSignalServiceProtosGroupDetailsAvatar : PBGeneratedMessage { +@private + BOOL hasContentType_:1; + BOOL hasLength_:1; + NSString* contentType; + UInt32 length; +} +- (BOOL) hasContentType; +- (BOOL) hasLength; +@property (readonly, strong) NSString* contentType; +@property (readonly) UInt32 length; + ++ (instancetype) defaultInstance; +- (instancetype) defaultInstance; + +- (BOOL) isInitialized; +- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output; +- (OWSSignalServiceProtosGroupDetailsAvatarBuilder*) builder; ++ (OWSSignalServiceProtosGroupDetailsAvatarBuilder*) builder; ++ (OWSSignalServiceProtosGroupDetailsAvatarBuilder*) builderWithPrototype:(OWSSignalServiceProtosGroupDetailsAvatar*) prototype; +- (OWSSignalServiceProtosGroupDetailsAvatarBuilder*) toBuilder; + ++ (OWSSignalServiceProtosGroupDetailsAvatar*) parseFromData:(NSData*) data; ++ (OWSSignalServiceProtosGroupDetailsAvatar*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry; ++ (OWSSignalServiceProtosGroupDetailsAvatar*) parseFromInputStream:(NSInputStream*) input; ++ (OWSSignalServiceProtosGroupDetailsAvatar*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; ++ (OWSSignalServiceProtosGroupDetailsAvatar*) parseFromCodedInputStream:(PBCodedInputStream*) input; ++ (OWSSignalServiceProtosGroupDetailsAvatar*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; +@end + +@interface OWSSignalServiceProtosGroupDetailsAvatarBuilder : PBGeneratedMessageBuilder { +@private + OWSSignalServiceProtosGroupDetailsAvatar* resultAvatar; +} + +- (OWSSignalServiceProtosGroupDetailsAvatar*) defaultInstance; + +- (OWSSignalServiceProtosGroupDetailsAvatarBuilder*) clear; +- (OWSSignalServiceProtosGroupDetailsAvatarBuilder*) clone; + +- (OWSSignalServiceProtosGroupDetailsAvatar*) build; +- (OWSSignalServiceProtosGroupDetailsAvatar*) buildPartial; + +- (OWSSignalServiceProtosGroupDetailsAvatarBuilder*) mergeFrom:(OWSSignalServiceProtosGroupDetailsAvatar*) other; +- (OWSSignalServiceProtosGroupDetailsAvatarBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input; +- (OWSSignalServiceProtosGroupDetailsAvatarBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; + +- (BOOL) hasContentType; +- (NSString*) contentType; +- (OWSSignalServiceProtosGroupDetailsAvatarBuilder*) setContentType:(NSString*) value; +- (OWSSignalServiceProtosGroupDetailsAvatarBuilder*) clearContentType; + +- (BOOL) hasLength; +- (UInt32) length; +- (OWSSignalServiceProtosGroupDetailsAvatarBuilder*) setLength:(UInt32) value; +- (OWSSignalServiceProtosGroupDetailsAvatarBuilder*) clearLength; +@end + +@interface OWSSignalServiceProtosGroupDetailsBuilder : PBGeneratedMessageBuilder { +@private + OWSSignalServiceProtosGroupDetails* resultGroupDetails; +} + +- (OWSSignalServiceProtosGroupDetails*) defaultInstance; + +- (OWSSignalServiceProtosGroupDetailsBuilder*) clear; +- (OWSSignalServiceProtosGroupDetailsBuilder*) clone; + +- (OWSSignalServiceProtosGroupDetails*) build; +- (OWSSignalServiceProtosGroupDetails*) buildPartial; + +- (OWSSignalServiceProtosGroupDetailsBuilder*) mergeFrom:(OWSSignalServiceProtosGroupDetails*) other; +- (OWSSignalServiceProtosGroupDetailsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input; +- (OWSSignalServiceProtosGroupDetailsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry; + +- (BOOL) hasId; +- (NSData*) id; +- (OWSSignalServiceProtosGroupDetailsBuilder*) setId:(NSData*) value; +- (OWSSignalServiceProtosGroupDetailsBuilder*) clearId; + +- (BOOL) hasName; +- (NSString*) name; +- (OWSSignalServiceProtosGroupDetailsBuilder*) setName:(NSString*) value; +- (OWSSignalServiceProtosGroupDetailsBuilder*) clearName; + +- (NSMutableArray *)members; +- (NSString*)membersAtIndex:(NSUInteger)index; +- (OWSSignalServiceProtosGroupDetailsBuilder *)addMembers:(NSString*)value; +- (OWSSignalServiceProtosGroupDetailsBuilder *)setMembersArray:(NSArray *)array; +- (OWSSignalServiceProtosGroupDetailsBuilder *)clearMembers; + +- (BOOL) hasAvatar; +- (OWSSignalServiceProtosGroupDetailsAvatar*) avatar; +- (OWSSignalServiceProtosGroupDetailsBuilder*) setAvatar:(OWSSignalServiceProtosGroupDetailsAvatar*) value; +- (OWSSignalServiceProtosGroupDetailsBuilder*) setAvatarBuilder:(OWSSignalServiceProtosGroupDetailsAvatarBuilder*) builderForValue; +- (OWSSignalServiceProtosGroupDetailsBuilder*) mergeAvatar:(OWSSignalServiceProtosGroupDetailsAvatar*) value; +- (OWSSignalServiceProtosGroupDetailsBuilder*) clearAvatar; + +- (BOOL) hasActive; +- (BOOL) active; +- (OWSSignalServiceProtosGroupDetailsBuilder*) setActive:(BOOL) value; +- (OWSSignalServiceProtosGroupDetailsBuilder*) clearActive; +@end + + +// @@protoc_insertion_point(global_scope) diff --git a/src/Messages/OWSSignalServiceProtos.pb.m b/src/Messages/OWSSignalServiceProtos.pb.m new file mode 100644 index 0000000..4579e1e --- /dev/null +++ b/src/Messages/OWSSignalServiceProtos.pb.m @@ -0,0 +1,5213 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! + +#import "OWSSignalServiceProtos.pb.h" +// @@protoc_insertion_point(imports) + +@implementation OWSSignalServiceProtosOwssignalServiceProtosRoot +static PBExtensionRegistry* extensionRegistry = nil; ++ (PBExtensionRegistry*) extensionRegistry { + return extensionRegistry; +} + ++ (void) initialize { + if (self == [OWSSignalServiceProtosOwssignalServiceProtosRoot class]) { + PBMutableExtensionRegistry* registry = [PBMutableExtensionRegistry registry]; + [self registerAllExtensions:registry]; + [ObjectivecDescriptorRoot registerAllExtensions:registry]; + extensionRegistry = registry; + } +} ++ (void) registerAllExtensions:(PBMutableExtensionRegistry*) registry { +} +@end + +@interface OWSSignalServiceProtosEnvelope () +@property OWSSignalServiceProtosEnvelopeType type; +@property (strong) NSString* source; +@property UInt32 sourceDevice; +@property (strong) NSString* relay; +@property UInt64 timestamp; +@property (strong) NSData* legacyMessage; +@property (strong) NSData* content; +@end + +@implementation OWSSignalServiceProtosEnvelope + +- (BOOL) hasType { + return !!hasType_; +} +- (void) setHasType:(BOOL) _value_ { + hasType_ = !!_value_; +} +@synthesize type; +- (BOOL) hasSource { + return !!hasSource_; +} +- (void) setHasSource:(BOOL) _value_ { + hasSource_ = !!_value_; +} +@synthesize source; +- (BOOL) hasSourceDevice { + return !!hasSourceDevice_; +} +- (void) setHasSourceDevice:(BOOL) _value_ { + hasSourceDevice_ = !!_value_; +} +@synthesize sourceDevice; +- (BOOL) hasRelay { + return !!hasRelay_; +} +- (void) setHasRelay:(BOOL) _value_ { + hasRelay_ = !!_value_; +} +@synthesize relay; +- (BOOL) hasTimestamp { + return !!hasTimestamp_; +} +- (void) setHasTimestamp:(BOOL) _value_ { + hasTimestamp_ = !!_value_; +} +@synthesize timestamp; +- (BOOL) hasLegacyMessage { + return !!hasLegacyMessage_; +} +- (void) setHasLegacyMessage:(BOOL) _value_ { + hasLegacyMessage_ = !!_value_; +} +@synthesize legacyMessage; +- (BOOL) hasContent { + return !!hasContent_; +} +- (void) setHasContent:(BOOL) _value_ { + hasContent_ = !!_value_; +} +@synthesize content; +- (instancetype) init { + if ((self = [super init])) { + self.type = OWSSignalServiceProtosEnvelopeTypeUnknown; + self.source = @""; + self.sourceDevice = 0; + self.relay = @""; + self.timestamp = 0L; + self.legacyMessage = [NSData data]; + self.content = [NSData data]; + } + return self; +} +static OWSSignalServiceProtosEnvelope* defaultOWSSignalServiceProtosEnvelopeInstance = nil; ++ (void) initialize { + if (self == [OWSSignalServiceProtosEnvelope class]) { + defaultOWSSignalServiceProtosEnvelopeInstance = [[OWSSignalServiceProtosEnvelope alloc] init]; + } +} ++ (instancetype) defaultInstance { + return defaultOWSSignalServiceProtosEnvelopeInstance; +} +- (instancetype) defaultInstance { + return defaultOWSSignalServiceProtosEnvelopeInstance; +} +- (BOOL) isInitialized { + return YES; +} +- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { + if (self.hasType) { + [output writeEnum:1 value:self.type]; + } + if (self.hasSource) { + [output writeString:2 value:self.source]; + } + if (self.hasRelay) { + [output writeString:3 value:self.relay]; + } + if (self.hasTimestamp) { + [output writeUInt64:5 value:self.timestamp]; + } + if (self.hasLegacyMessage) { + [output writeData:6 value:self.legacyMessage]; + } + if (self.hasSourceDevice) { + [output writeUInt32:7 value:self.sourceDevice]; + } + if (self.hasContent) { + [output writeData:8 value:self.content]; + } + [self.unknownFields writeToCodedOutputStream:output]; +} +- (SInt32) serializedSize { + __block SInt32 size_ = memoizedSerializedSize; + if (size_ != -1) { + return size_; + } + + size_ = 0; + if (self.hasType) { + size_ += computeEnumSize(1, self.type); + } + if (self.hasSource) { + size_ += computeStringSize(2, self.source); + } + if (self.hasRelay) { + size_ += computeStringSize(3, self.relay); + } + if (self.hasTimestamp) { + size_ += computeUInt64Size(5, self.timestamp); + } + if (self.hasLegacyMessage) { + size_ += computeDataSize(6, self.legacyMessage); + } + if (self.hasSourceDevice) { + size_ += computeUInt32Size(7, self.sourceDevice); + } + if (self.hasContent) { + size_ += computeDataSize(8, self.content); + } + size_ += self.unknownFields.serializedSize; + memoizedSerializedSize = size_; + return size_; +} ++ (OWSSignalServiceProtosEnvelope*) parseFromData:(NSData*) data { + return (OWSSignalServiceProtosEnvelope*)[[[OWSSignalServiceProtosEnvelope builder] mergeFromData:data] build]; +} ++ (OWSSignalServiceProtosEnvelope*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosEnvelope*)[[[OWSSignalServiceProtosEnvelope builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosEnvelope*) parseFromInputStream:(NSInputStream*) input { + return (OWSSignalServiceProtosEnvelope*)[[[OWSSignalServiceProtosEnvelope builder] mergeFromInputStream:input] build]; +} ++ (OWSSignalServiceProtosEnvelope*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosEnvelope*)[[[OWSSignalServiceProtosEnvelope builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosEnvelope*) parseFromCodedInputStream:(PBCodedInputStream*) input { + return (OWSSignalServiceProtosEnvelope*)[[[OWSSignalServiceProtosEnvelope builder] mergeFromCodedInputStream:input] build]; +} ++ (OWSSignalServiceProtosEnvelope*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosEnvelope*)[[[OWSSignalServiceProtosEnvelope builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosEnvelopeBuilder*) builder { + return [[OWSSignalServiceProtosEnvelopeBuilder alloc] init]; +} ++ (OWSSignalServiceProtosEnvelopeBuilder*) builderWithPrototype:(OWSSignalServiceProtosEnvelope*) prototype { + return [[OWSSignalServiceProtosEnvelope builder] mergeFrom:prototype]; +} +- (OWSSignalServiceProtosEnvelopeBuilder*) builder { + return [OWSSignalServiceProtosEnvelope builder]; +} +- (OWSSignalServiceProtosEnvelopeBuilder*) toBuilder { + return [OWSSignalServiceProtosEnvelope builderWithPrototype:self]; +} +- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { + if (self.hasType) { + [output appendFormat:@"%@%@: %@\n", indent, @"type", NSStringFromOWSSignalServiceProtosEnvelopeType(self.type)]; + } + if (self.hasSource) { + [output appendFormat:@"%@%@: %@\n", indent, @"source", self.source]; + } + if (self.hasRelay) { + [output appendFormat:@"%@%@: %@\n", indent, @"relay", self.relay]; + } + if (self.hasTimestamp) { + [output appendFormat:@"%@%@: %@\n", indent, @"timestamp", [NSNumber numberWithLongLong:self.timestamp]]; + } + if (self.hasLegacyMessage) { + [output appendFormat:@"%@%@: %@\n", indent, @"legacyMessage", self.legacyMessage]; + } + if (self.hasSourceDevice) { + [output appendFormat:@"%@%@: %@\n", indent, @"sourceDevice", [NSNumber numberWithInteger:self.sourceDevice]]; + } + if (self.hasContent) { + [output appendFormat:@"%@%@: %@\n", indent, @"content", self.content]; + } + [self.unknownFields writeDescriptionTo:output withIndent:indent]; +} +- (void) storeInDictionary:(NSMutableDictionary *)dictionary { + if (self.hasType) { + [dictionary setObject: @(self.type) forKey: @"type"]; + } + if (self.hasSource) { + [dictionary setObject: self.source forKey: @"source"]; + } + if (self.hasRelay) { + [dictionary setObject: self.relay forKey: @"relay"]; + } + if (self.hasTimestamp) { + [dictionary setObject: [NSNumber numberWithLongLong:self.timestamp] forKey: @"timestamp"]; + } + if (self.hasLegacyMessage) { + [dictionary setObject: self.legacyMessage forKey: @"legacyMessage"]; + } + if (self.hasSourceDevice) { + [dictionary setObject: [NSNumber numberWithInteger:self.sourceDevice] forKey: @"sourceDevice"]; + } + if (self.hasContent) { + [dictionary setObject: self.content forKey: @"content"]; + } + [self.unknownFields storeInDictionary:dictionary]; +} +- (BOOL) isEqual:(id)other { + if (other == self) { + return YES; + } + if (![other isKindOfClass:[OWSSignalServiceProtosEnvelope class]]) { + return NO; + } + OWSSignalServiceProtosEnvelope *otherMessage = other; + return + self.hasType == otherMessage.hasType && + (!self.hasType || self.type == otherMessage.type) && + self.hasSource == otherMessage.hasSource && + (!self.hasSource || [self.source isEqual:otherMessage.source]) && + self.hasRelay == otherMessage.hasRelay && + (!self.hasRelay || [self.relay isEqual:otherMessage.relay]) && + self.hasTimestamp == otherMessage.hasTimestamp && + (!self.hasTimestamp || self.timestamp == otherMessage.timestamp) && + self.hasLegacyMessage == otherMessage.hasLegacyMessage && + (!self.hasLegacyMessage || [self.legacyMessage isEqual:otherMessage.legacyMessage]) && + self.hasSourceDevice == otherMessage.hasSourceDevice && + (!self.hasSourceDevice || self.sourceDevice == otherMessage.sourceDevice) && + self.hasContent == otherMessage.hasContent && + (!self.hasContent || [self.content isEqual:otherMessage.content]) && + (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); +} +- (NSUInteger) hash { + __block NSUInteger hashCode = 7; + if (self.hasType) { + hashCode = hashCode * 31 + self.type; + } + if (self.hasSource) { + hashCode = hashCode * 31 + [self.source hash]; + } + if (self.hasRelay) { + hashCode = hashCode * 31 + [self.relay hash]; + } + if (self.hasTimestamp) { + hashCode = hashCode * 31 + [[NSNumber numberWithLongLong:self.timestamp] hash]; + } + if (self.hasLegacyMessage) { + hashCode = hashCode * 31 + [self.legacyMessage hash]; + } + if (self.hasSourceDevice) { + hashCode = hashCode * 31 + [[NSNumber numberWithInteger:self.sourceDevice] hash]; + } + if (self.hasContent) { + hashCode = hashCode * 31 + [self.content hash]; + } + hashCode = hashCode * 31 + [self.unknownFields hash]; + return hashCode; +} +@end + +BOOL OWSSignalServiceProtosEnvelopeTypeIsValidValue(OWSSignalServiceProtosEnvelopeType value) { + switch (value) { + case OWSSignalServiceProtosEnvelopeTypeUnknown: + case OWSSignalServiceProtosEnvelopeTypeCiphertext: + case OWSSignalServiceProtosEnvelopeTypeKeyExchange: + case OWSSignalServiceProtosEnvelopeTypePrekeyBundle: + case OWSSignalServiceProtosEnvelopeTypeReceipt: + return YES; + default: + return NO; + } +} +NSString *NSStringFromOWSSignalServiceProtosEnvelopeType(OWSSignalServiceProtosEnvelopeType value) { + switch (value) { + case OWSSignalServiceProtosEnvelopeTypeUnknown: + return @"OWSSignalServiceProtosEnvelopeTypeUnknown"; + case OWSSignalServiceProtosEnvelopeTypeCiphertext: + return @"OWSSignalServiceProtosEnvelopeTypeCiphertext"; + case OWSSignalServiceProtosEnvelopeTypeKeyExchange: + return @"OWSSignalServiceProtosEnvelopeTypeKeyExchange"; + case OWSSignalServiceProtosEnvelopeTypePrekeyBundle: + return @"OWSSignalServiceProtosEnvelopeTypePrekeyBundle"; + case OWSSignalServiceProtosEnvelopeTypeReceipt: + return @"OWSSignalServiceProtosEnvelopeTypeReceipt"; + default: + return nil; + } +} + +@interface OWSSignalServiceProtosEnvelopeBuilder() +@property (strong) OWSSignalServiceProtosEnvelope* resultEnvelope; +@end + +@implementation OWSSignalServiceProtosEnvelopeBuilder +@synthesize resultEnvelope; +- (instancetype) init { + if ((self = [super init])) { + self.resultEnvelope = [[OWSSignalServiceProtosEnvelope alloc] init]; + } + return self; +} +- (PBGeneratedMessage*) internalGetResult { + return resultEnvelope; +} +- (OWSSignalServiceProtosEnvelopeBuilder*) clear { + self.resultEnvelope = [[OWSSignalServiceProtosEnvelope alloc] init]; + return self; +} +- (OWSSignalServiceProtosEnvelopeBuilder*) clone { + return [OWSSignalServiceProtosEnvelope builderWithPrototype:resultEnvelope]; +} +- (OWSSignalServiceProtosEnvelope*) defaultInstance { + return [OWSSignalServiceProtosEnvelope defaultInstance]; +} +- (OWSSignalServiceProtosEnvelope*) build { + [self checkInitialized]; + return [self buildPartial]; +} +- (OWSSignalServiceProtosEnvelope*) buildPartial { + OWSSignalServiceProtosEnvelope* returnMe = resultEnvelope; + self.resultEnvelope = nil; + return returnMe; +} +- (OWSSignalServiceProtosEnvelopeBuilder*) mergeFrom:(OWSSignalServiceProtosEnvelope*) other { + if (other == [OWSSignalServiceProtosEnvelope defaultInstance]) { + return self; + } + if (other.hasType) { + [self setType:other.type]; + } + if (other.hasSource) { + [self setSource:other.source]; + } + if (other.hasSourceDevice) { + [self setSourceDevice:other.sourceDevice]; + } + if (other.hasRelay) { + [self setRelay:other.relay]; + } + if (other.hasTimestamp) { + [self setTimestamp:other.timestamp]; + } + if (other.hasLegacyMessage) { + [self setLegacyMessage:other.legacyMessage]; + } + if (other.hasContent) { + [self setContent:other.content]; + } + [self mergeUnknownFields:other.unknownFields]; + return self; +} +- (OWSSignalServiceProtosEnvelopeBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { + return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; +} +- (OWSSignalServiceProtosEnvelopeBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; + while (YES) { + SInt32 tag = [input readTag]; + switch (tag) { + case 0: + [self setUnknownFields:[unknownFields build]]; + return self; + default: { + if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) { + [self setUnknownFields:[unknownFields build]]; + return self; + } + break; + } + case 8: { + OWSSignalServiceProtosEnvelopeType value = (OWSSignalServiceProtosEnvelopeType)[input readEnum]; + if (OWSSignalServiceProtosEnvelopeTypeIsValidValue(value)) { + [self setType:value]; + } else { + [unknownFields mergeVarintField:1 value:value]; + } + break; + } + case 18: { + [self setSource:[input readString]]; + break; + } + case 26: { + [self setRelay:[input readString]]; + break; + } + case 40: { + [self setTimestamp:[input readUInt64]]; + break; + } + case 50: { + [self setLegacyMessage:[input readData]]; + break; + } + case 56: { + [self setSourceDevice:[input readUInt32]]; + break; + } + case 66: { + [self setContent:[input readData]]; + break; + } + } + } +} +- (BOOL) hasType { + return resultEnvelope.hasType; +} +- (OWSSignalServiceProtosEnvelopeType) type { + return resultEnvelope.type; +} +- (OWSSignalServiceProtosEnvelopeBuilder*) setType:(OWSSignalServiceProtosEnvelopeType) value { + resultEnvelope.hasType = YES; + resultEnvelope.type = value; + return self; +} +- (OWSSignalServiceProtosEnvelopeBuilder*) clearType { + resultEnvelope.hasType = NO; + resultEnvelope.type = OWSSignalServiceProtosEnvelopeTypeUnknown; + return self; +} +- (BOOL) hasSource { + return resultEnvelope.hasSource; +} +- (NSString*) source { + return resultEnvelope.source; +} +- (OWSSignalServiceProtosEnvelopeBuilder*) setSource:(NSString*) value { + resultEnvelope.hasSource = YES; + resultEnvelope.source = value; + return self; +} +- (OWSSignalServiceProtosEnvelopeBuilder*) clearSource { + resultEnvelope.hasSource = NO; + resultEnvelope.source = @""; + return self; +} +- (BOOL) hasSourceDevice { + return resultEnvelope.hasSourceDevice; +} +- (UInt32) sourceDevice { + return resultEnvelope.sourceDevice; +} +- (OWSSignalServiceProtosEnvelopeBuilder*) setSourceDevice:(UInt32) value { + resultEnvelope.hasSourceDevice = YES; + resultEnvelope.sourceDevice = value; + return self; +} +- (OWSSignalServiceProtosEnvelopeBuilder*) clearSourceDevice { + resultEnvelope.hasSourceDevice = NO; + resultEnvelope.sourceDevice = 0; + return self; +} +- (BOOL) hasRelay { + return resultEnvelope.hasRelay; +} +- (NSString*) relay { + return resultEnvelope.relay; +} +- (OWSSignalServiceProtosEnvelopeBuilder*) setRelay:(NSString*) value { + resultEnvelope.hasRelay = YES; + resultEnvelope.relay = value; + return self; +} +- (OWSSignalServiceProtosEnvelopeBuilder*) clearRelay { + resultEnvelope.hasRelay = NO; + resultEnvelope.relay = @""; + return self; +} +- (BOOL) hasTimestamp { + return resultEnvelope.hasTimestamp; +} +- (UInt64) timestamp { + return resultEnvelope.timestamp; +} +- (OWSSignalServiceProtosEnvelopeBuilder*) setTimestamp:(UInt64) value { + resultEnvelope.hasTimestamp = YES; + resultEnvelope.timestamp = value; + return self; +} +- (OWSSignalServiceProtosEnvelopeBuilder*) clearTimestamp { + resultEnvelope.hasTimestamp = NO; + resultEnvelope.timestamp = 0L; + return self; +} +- (BOOL) hasLegacyMessage { + return resultEnvelope.hasLegacyMessage; +} +- (NSData*) legacyMessage { + return resultEnvelope.legacyMessage; +} +- (OWSSignalServiceProtosEnvelopeBuilder*) setLegacyMessage:(NSData*) value { + resultEnvelope.hasLegacyMessage = YES; + resultEnvelope.legacyMessage = value; + return self; +} +- (OWSSignalServiceProtosEnvelopeBuilder*) clearLegacyMessage { + resultEnvelope.hasLegacyMessage = NO; + resultEnvelope.legacyMessage = [NSData data]; + return self; +} +- (BOOL) hasContent { + return resultEnvelope.hasContent; +} +- (NSData*) content { + return resultEnvelope.content; +} +- (OWSSignalServiceProtosEnvelopeBuilder*) setContent:(NSData*) value { + resultEnvelope.hasContent = YES; + resultEnvelope.content = value; + return self; +} +- (OWSSignalServiceProtosEnvelopeBuilder*) clearContent { + resultEnvelope.hasContent = NO; + resultEnvelope.content = [NSData data]; + return self; +} +@end + +@interface OWSSignalServiceProtosContent () +@property (strong) OWSSignalServiceProtosDataMessage* dataMessage; +@property (strong) OWSSignalServiceProtosSyncMessage* syncMessage; +@end + +@implementation OWSSignalServiceProtosContent + +- (BOOL) hasDataMessage { + return !!hasDataMessage_; +} +- (void) setHasDataMessage:(BOOL) _value_ { + hasDataMessage_ = !!_value_; +} +@synthesize dataMessage; +- (BOOL) hasSyncMessage { + return !!hasSyncMessage_; +} +- (void) setHasSyncMessage:(BOOL) _value_ { + hasSyncMessage_ = !!_value_; +} +@synthesize syncMessage; +- (instancetype) init { + if ((self = [super init])) { + self.dataMessage = [OWSSignalServiceProtosDataMessage defaultInstance]; + self.syncMessage = [OWSSignalServiceProtosSyncMessage defaultInstance]; + } + return self; +} +static OWSSignalServiceProtosContent* defaultOWSSignalServiceProtosContentInstance = nil; ++ (void) initialize { + if (self == [OWSSignalServiceProtosContent class]) { + defaultOWSSignalServiceProtosContentInstance = [[OWSSignalServiceProtosContent alloc] init]; + } +} ++ (instancetype) defaultInstance { + return defaultOWSSignalServiceProtosContentInstance; +} +- (instancetype) defaultInstance { + return defaultOWSSignalServiceProtosContentInstance; +} +- (BOOL) isInitialized { + return YES; +} +- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { + if (self.hasDataMessage) { + [output writeMessage:1 value:self.dataMessage]; + } + if (self.hasSyncMessage) { + [output writeMessage:2 value:self.syncMessage]; + } + [self.unknownFields writeToCodedOutputStream:output]; +} +- (SInt32) serializedSize { + __block SInt32 size_ = memoizedSerializedSize; + if (size_ != -1) { + return size_; + } + + size_ = 0; + if (self.hasDataMessage) { + size_ += computeMessageSize(1, self.dataMessage); + } + if (self.hasSyncMessage) { + size_ += computeMessageSize(2, self.syncMessage); + } + size_ += self.unknownFields.serializedSize; + memoizedSerializedSize = size_; + return size_; +} ++ (OWSSignalServiceProtosContent*) parseFromData:(NSData*) data { + return (OWSSignalServiceProtosContent*)[[[OWSSignalServiceProtosContent builder] mergeFromData:data] build]; +} ++ (OWSSignalServiceProtosContent*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosContent*)[[[OWSSignalServiceProtosContent builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosContent*) parseFromInputStream:(NSInputStream*) input { + return (OWSSignalServiceProtosContent*)[[[OWSSignalServiceProtosContent builder] mergeFromInputStream:input] build]; +} ++ (OWSSignalServiceProtosContent*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosContent*)[[[OWSSignalServiceProtosContent builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosContent*) parseFromCodedInputStream:(PBCodedInputStream*) input { + return (OWSSignalServiceProtosContent*)[[[OWSSignalServiceProtosContent builder] mergeFromCodedInputStream:input] build]; +} ++ (OWSSignalServiceProtosContent*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosContent*)[[[OWSSignalServiceProtosContent builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosContentBuilder*) builder { + return [[OWSSignalServiceProtosContentBuilder alloc] init]; +} ++ (OWSSignalServiceProtosContentBuilder*) builderWithPrototype:(OWSSignalServiceProtosContent*) prototype { + return [[OWSSignalServiceProtosContent builder] mergeFrom:prototype]; +} +- (OWSSignalServiceProtosContentBuilder*) builder { + return [OWSSignalServiceProtosContent builder]; +} +- (OWSSignalServiceProtosContentBuilder*) toBuilder { + return [OWSSignalServiceProtosContent builderWithPrototype:self]; +} +- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { + if (self.hasDataMessage) { + [output appendFormat:@"%@%@ {\n", indent, @"dataMessage"]; + [self.dataMessage writeDescriptionTo:output + withIndent:[NSString stringWithFormat:@"%@ ", indent]]; + [output appendFormat:@"%@}\n", indent]; + } + if (self.hasSyncMessage) { + [output appendFormat:@"%@%@ {\n", indent, @"syncMessage"]; + [self.syncMessage writeDescriptionTo:output + withIndent:[NSString stringWithFormat:@"%@ ", indent]]; + [output appendFormat:@"%@}\n", indent]; + } + [self.unknownFields writeDescriptionTo:output withIndent:indent]; +} +- (void) storeInDictionary:(NSMutableDictionary *)dictionary { + if (self.hasDataMessage) { + NSMutableDictionary *messageDictionary = [NSMutableDictionary dictionary]; + [self.dataMessage storeInDictionary:messageDictionary]; + [dictionary setObject:[NSDictionary dictionaryWithDictionary:messageDictionary] forKey:@"dataMessage"]; + } + if (self.hasSyncMessage) { + NSMutableDictionary *messageDictionary = [NSMutableDictionary dictionary]; + [self.syncMessage storeInDictionary:messageDictionary]; + [dictionary setObject:[NSDictionary dictionaryWithDictionary:messageDictionary] forKey:@"syncMessage"]; + } + [self.unknownFields storeInDictionary:dictionary]; +} +- (BOOL) isEqual:(id)other { + if (other == self) { + return YES; + } + if (![other isKindOfClass:[OWSSignalServiceProtosContent class]]) { + return NO; + } + OWSSignalServiceProtosContent *otherMessage = other; + return + self.hasDataMessage == otherMessage.hasDataMessage && + (!self.hasDataMessage || [self.dataMessage isEqual:otherMessage.dataMessage]) && + self.hasSyncMessage == otherMessage.hasSyncMessage && + (!self.hasSyncMessage || [self.syncMessage isEqual:otherMessage.syncMessage]) && + (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); +} +- (NSUInteger) hash { + __block NSUInteger hashCode = 7; + if (self.hasDataMessage) { + hashCode = hashCode * 31 + [self.dataMessage hash]; + } + if (self.hasSyncMessage) { + hashCode = hashCode * 31 + [self.syncMessage hash]; + } + hashCode = hashCode * 31 + [self.unknownFields hash]; + return hashCode; +} +@end + +@interface OWSSignalServiceProtosContentBuilder() +@property (strong) OWSSignalServiceProtosContent* resultContent; +@end + +@implementation OWSSignalServiceProtosContentBuilder +@synthesize resultContent; +- (instancetype) init { + if ((self = [super init])) { + self.resultContent = [[OWSSignalServiceProtosContent alloc] init]; + } + return self; +} +- (PBGeneratedMessage*) internalGetResult { + return resultContent; +} +- (OWSSignalServiceProtosContentBuilder*) clear { + self.resultContent = [[OWSSignalServiceProtosContent alloc] init]; + return self; +} +- (OWSSignalServiceProtosContentBuilder*) clone { + return [OWSSignalServiceProtosContent builderWithPrototype:resultContent]; +} +- (OWSSignalServiceProtosContent*) defaultInstance { + return [OWSSignalServiceProtosContent defaultInstance]; +} +- (OWSSignalServiceProtosContent*) build { + [self checkInitialized]; + return [self buildPartial]; +} +- (OWSSignalServiceProtosContent*) buildPartial { + OWSSignalServiceProtosContent* returnMe = resultContent; + self.resultContent = nil; + return returnMe; +} +- (OWSSignalServiceProtosContentBuilder*) mergeFrom:(OWSSignalServiceProtosContent*) other { + if (other == [OWSSignalServiceProtosContent defaultInstance]) { + return self; + } + if (other.hasDataMessage) { + [self mergeDataMessage:other.dataMessage]; + } + if (other.hasSyncMessage) { + [self mergeSyncMessage:other.syncMessage]; + } + [self mergeUnknownFields:other.unknownFields]; + return self; +} +- (OWSSignalServiceProtosContentBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { + return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; +} +- (OWSSignalServiceProtosContentBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; + while (YES) { + SInt32 tag = [input readTag]; + switch (tag) { + case 0: + [self setUnknownFields:[unknownFields build]]; + return self; + default: { + if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) { + [self setUnknownFields:[unknownFields build]]; + return self; + } + break; + } + case 10: { + OWSSignalServiceProtosDataMessageBuilder* subBuilder = [OWSSignalServiceProtosDataMessage builder]; + if (self.hasDataMessage) { + [subBuilder mergeFrom:self.dataMessage]; + } + [input readMessage:subBuilder extensionRegistry:extensionRegistry]; + [self setDataMessage:[subBuilder buildPartial]]; + break; + } + case 18: { + OWSSignalServiceProtosSyncMessageBuilder* subBuilder = [OWSSignalServiceProtosSyncMessage builder]; + if (self.hasSyncMessage) { + [subBuilder mergeFrom:self.syncMessage]; + } + [input readMessage:subBuilder extensionRegistry:extensionRegistry]; + [self setSyncMessage:[subBuilder buildPartial]]; + break; + } + } + } +} +- (BOOL) hasDataMessage { + return resultContent.hasDataMessage; +} +- (OWSSignalServiceProtosDataMessage*) dataMessage { + return resultContent.dataMessage; +} +- (OWSSignalServiceProtosContentBuilder*) setDataMessage:(OWSSignalServiceProtosDataMessage*) value { + resultContent.hasDataMessage = YES; + resultContent.dataMessage = value; + return self; +} +- (OWSSignalServiceProtosContentBuilder*) setDataMessageBuilder:(OWSSignalServiceProtosDataMessageBuilder*) builderForValue { + return [self setDataMessage:[builderForValue build]]; +} +- (OWSSignalServiceProtosContentBuilder*) mergeDataMessage:(OWSSignalServiceProtosDataMessage*) value { + if (resultContent.hasDataMessage && + resultContent.dataMessage != [OWSSignalServiceProtosDataMessage defaultInstance]) { + resultContent.dataMessage = + [[[OWSSignalServiceProtosDataMessage builderWithPrototype:resultContent.dataMessage] mergeFrom:value] buildPartial]; + } else { + resultContent.dataMessage = value; + } + resultContent.hasDataMessage = YES; + return self; +} +- (OWSSignalServiceProtosContentBuilder*) clearDataMessage { + resultContent.hasDataMessage = NO; + resultContent.dataMessage = [OWSSignalServiceProtosDataMessage defaultInstance]; + return self; +} +- (BOOL) hasSyncMessage { + return resultContent.hasSyncMessage; +} +- (OWSSignalServiceProtosSyncMessage*) syncMessage { + return resultContent.syncMessage; +} +- (OWSSignalServiceProtosContentBuilder*) setSyncMessage:(OWSSignalServiceProtosSyncMessage*) value { + resultContent.hasSyncMessage = YES; + resultContent.syncMessage = value; + return self; +} +- (OWSSignalServiceProtosContentBuilder*) setSyncMessageBuilder:(OWSSignalServiceProtosSyncMessageBuilder*) builderForValue { + return [self setSyncMessage:[builderForValue build]]; +} +- (OWSSignalServiceProtosContentBuilder*) mergeSyncMessage:(OWSSignalServiceProtosSyncMessage*) value { + if (resultContent.hasSyncMessage && + resultContent.syncMessage != [OWSSignalServiceProtosSyncMessage defaultInstance]) { + resultContent.syncMessage = + [[[OWSSignalServiceProtosSyncMessage builderWithPrototype:resultContent.syncMessage] mergeFrom:value] buildPartial]; + } else { + resultContent.syncMessage = value; + } + resultContent.hasSyncMessage = YES; + return self; +} +- (OWSSignalServiceProtosContentBuilder*) clearSyncMessage { + resultContent.hasSyncMessage = NO; + resultContent.syncMessage = [OWSSignalServiceProtosSyncMessage defaultInstance]; + return self; +} +@end + +@interface OWSSignalServiceProtosDataMessage () +@property (strong) NSString* body; +@property (strong) NSMutableArray * attachmentsArray; +@property (strong) OWSSignalServiceProtosGroupContext* group; +@property UInt32 flags; +@end + +@implementation OWSSignalServiceProtosDataMessage + +- (BOOL) hasBody { + return !!hasBody_; +} +- (void) setHasBody:(BOOL) _value_ { + hasBody_ = !!_value_; +} +@synthesize body; +@synthesize attachmentsArray; +@dynamic attachments; +- (BOOL) hasGroup { + return !!hasGroup_; +} +- (void) setHasGroup:(BOOL) _value_ { + hasGroup_ = !!_value_; +} +@synthesize group; +- (BOOL) hasFlags { + return !!hasFlags_; +} +- (void) setHasFlags:(BOOL) _value_ { + hasFlags_ = !!_value_; +} +@synthesize flags; +- (instancetype) init { + if ((self = [super init])) { + self.body = @""; + self.group = [OWSSignalServiceProtosGroupContext defaultInstance]; + self.flags = 0; + } + return self; +} +static OWSSignalServiceProtosDataMessage* defaultOWSSignalServiceProtosDataMessageInstance = nil; ++ (void) initialize { + if (self == [OWSSignalServiceProtosDataMessage class]) { + defaultOWSSignalServiceProtosDataMessageInstance = [[OWSSignalServiceProtosDataMessage alloc] init]; + } +} ++ (instancetype) defaultInstance { + return defaultOWSSignalServiceProtosDataMessageInstance; +} +- (instancetype) defaultInstance { + return defaultOWSSignalServiceProtosDataMessageInstance; +} +- (NSArray *)attachments { + return attachmentsArray; +} +- (OWSSignalServiceProtosAttachmentPointer*)attachmentsAtIndex:(NSUInteger)index { + return [attachmentsArray objectAtIndex:index]; +} +- (BOOL) isInitialized { + return YES; +} +- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { + if (self.hasBody) { + [output writeString:1 value:self.body]; + } + [self.attachmentsArray enumerateObjectsUsingBlock:^(OWSSignalServiceProtosAttachmentPointer *element, NSUInteger idx, BOOL *stop) { + [output writeMessage:2 value:element]; + }]; + if (self.hasGroup) { + [output writeMessage:3 value:self.group]; + } + if (self.hasFlags) { + [output writeUInt32:4 value:self.flags]; + } + [self.unknownFields writeToCodedOutputStream:output]; +} +- (SInt32) serializedSize { + __block SInt32 size_ = memoizedSerializedSize; + if (size_ != -1) { + return size_; + } + + size_ = 0; + if (self.hasBody) { + size_ += computeStringSize(1, self.body); + } + [self.attachmentsArray enumerateObjectsUsingBlock:^(OWSSignalServiceProtosAttachmentPointer *element, NSUInteger idx, BOOL *stop) { + size_ += computeMessageSize(2, element); + }]; + if (self.hasGroup) { + size_ += computeMessageSize(3, self.group); + } + if (self.hasFlags) { + size_ += computeUInt32Size(4, self.flags); + } + size_ += self.unknownFields.serializedSize; + memoizedSerializedSize = size_; + return size_; +} ++ (OWSSignalServiceProtosDataMessage*) parseFromData:(NSData*) data { + return (OWSSignalServiceProtosDataMessage*)[[[OWSSignalServiceProtosDataMessage builder] mergeFromData:data] build]; +} ++ (OWSSignalServiceProtosDataMessage*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosDataMessage*)[[[OWSSignalServiceProtosDataMessage builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosDataMessage*) parseFromInputStream:(NSInputStream*) input { + return (OWSSignalServiceProtosDataMessage*)[[[OWSSignalServiceProtosDataMessage builder] mergeFromInputStream:input] build]; +} ++ (OWSSignalServiceProtosDataMessage*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosDataMessage*)[[[OWSSignalServiceProtosDataMessage builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosDataMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input { + return (OWSSignalServiceProtosDataMessage*)[[[OWSSignalServiceProtosDataMessage builder] mergeFromCodedInputStream:input] build]; +} ++ (OWSSignalServiceProtosDataMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosDataMessage*)[[[OWSSignalServiceProtosDataMessage builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosDataMessageBuilder*) builder { + return [[OWSSignalServiceProtosDataMessageBuilder alloc] init]; +} ++ (OWSSignalServiceProtosDataMessageBuilder*) builderWithPrototype:(OWSSignalServiceProtosDataMessage*) prototype { + return [[OWSSignalServiceProtosDataMessage builder] mergeFrom:prototype]; +} +- (OWSSignalServiceProtosDataMessageBuilder*) builder { + return [OWSSignalServiceProtosDataMessage builder]; +} +- (OWSSignalServiceProtosDataMessageBuilder*) toBuilder { + return [OWSSignalServiceProtosDataMessage builderWithPrototype:self]; +} +- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { + if (self.hasBody) { + [output appendFormat:@"%@%@: %@\n", indent, @"body", self.body]; + } + [self.attachmentsArray enumerateObjectsUsingBlock:^(OWSSignalServiceProtosAttachmentPointer *element, NSUInteger idx, BOOL *stop) { + [output appendFormat:@"%@%@ {\n", indent, @"attachments"]; + [element writeDescriptionTo:output + withIndent:[NSString stringWithFormat:@"%@ ", indent]]; + [output appendFormat:@"%@}\n", indent]; + }]; + if (self.hasGroup) { + [output appendFormat:@"%@%@ {\n", indent, @"group"]; + [self.group writeDescriptionTo:output + withIndent:[NSString stringWithFormat:@"%@ ", indent]]; + [output appendFormat:@"%@}\n", indent]; + } + if (self.hasFlags) { + [output appendFormat:@"%@%@: %@\n", indent, @"flags", [NSNumber numberWithInteger:self.flags]]; + } + [self.unknownFields writeDescriptionTo:output withIndent:indent]; +} +- (void) storeInDictionary:(NSMutableDictionary *)dictionary { + if (self.hasBody) { + [dictionary setObject: self.body forKey: @"body"]; + } + for (OWSSignalServiceProtosAttachmentPointer* element in self.attachmentsArray) { + NSMutableDictionary *elementDictionary = [NSMutableDictionary dictionary]; + [element storeInDictionary:elementDictionary]; + [dictionary setObject:[NSDictionary dictionaryWithDictionary:elementDictionary] forKey:@"attachments"]; + } + if (self.hasGroup) { + NSMutableDictionary *messageDictionary = [NSMutableDictionary dictionary]; + [self.group storeInDictionary:messageDictionary]; + [dictionary setObject:[NSDictionary dictionaryWithDictionary:messageDictionary] forKey:@"group"]; + } + if (self.hasFlags) { + [dictionary setObject: [NSNumber numberWithInteger:self.flags] forKey: @"flags"]; + } + [self.unknownFields storeInDictionary:dictionary]; +} +- (BOOL) isEqual:(id)other { + if (other == self) { + return YES; + } + if (![other isKindOfClass:[OWSSignalServiceProtosDataMessage class]]) { + return NO; + } + OWSSignalServiceProtosDataMessage *otherMessage = other; + return + self.hasBody == otherMessage.hasBody && + (!self.hasBody || [self.body isEqual:otherMessage.body]) && + [self.attachmentsArray isEqualToArray:otherMessage.attachmentsArray] && + self.hasGroup == otherMessage.hasGroup && + (!self.hasGroup || [self.group isEqual:otherMessage.group]) && + self.hasFlags == otherMessage.hasFlags && + (!self.hasFlags || self.flags == otherMessage.flags) && + (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); +} +- (NSUInteger) hash { + __block NSUInteger hashCode = 7; + if (self.hasBody) { + hashCode = hashCode * 31 + [self.body hash]; + } + [self.attachmentsArray enumerateObjectsUsingBlock:^(OWSSignalServiceProtosAttachmentPointer *element, NSUInteger idx, BOOL *stop) { + hashCode = hashCode * 31 + [element hash]; + }]; + if (self.hasGroup) { + hashCode = hashCode * 31 + [self.group hash]; + } + if (self.hasFlags) { + hashCode = hashCode * 31 + [[NSNumber numberWithInteger:self.flags] hash]; + } + hashCode = hashCode * 31 + [self.unknownFields hash]; + return hashCode; +} +@end + +BOOL OWSSignalServiceProtosDataMessageFlagsIsValidValue(OWSSignalServiceProtosDataMessageFlags value) { + switch (value) { + case OWSSignalServiceProtosDataMessageFlagsEndSession: + return YES; + default: + return NO; + } +} +NSString *NSStringFromOWSSignalServiceProtosDataMessageFlags(OWSSignalServiceProtosDataMessageFlags value) { + switch (value) { + case OWSSignalServiceProtosDataMessageFlagsEndSession: + return @"OWSSignalServiceProtosDataMessageFlagsEndSession"; + default: + return nil; + } +} + +@interface OWSSignalServiceProtosDataMessageBuilder() +@property (strong) OWSSignalServiceProtosDataMessage* resultDataMessage; +@end + +@implementation OWSSignalServiceProtosDataMessageBuilder +@synthesize resultDataMessage; +- (instancetype) init { + if ((self = [super init])) { + self.resultDataMessage = [[OWSSignalServiceProtosDataMessage alloc] init]; + } + return self; +} +- (PBGeneratedMessage*) internalGetResult { + return resultDataMessage; +} +- (OWSSignalServiceProtosDataMessageBuilder*) clear { + self.resultDataMessage = [[OWSSignalServiceProtosDataMessage alloc] init]; + return self; +} +- (OWSSignalServiceProtosDataMessageBuilder*) clone { + return [OWSSignalServiceProtosDataMessage builderWithPrototype:resultDataMessage]; +} +- (OWSSignalServiceProtosDataMessage*) defaultInstance { + return [OWSSignalServiceProtosDataMessage defaultInstance]; +} +- (OWSSignalServiceProtosDataMessage*) build { + [self checkInitialized]; + return [self buildPartial]; +} +- (OWSSignalServiceProtosDataMessage*) buildPartial { + OWSSignalServiceProtosDataMessage* returnMe = resultDataMessage; + self.resultDataMessage = nil; + return returnMe; +} +- (OWSSignalServiceProtosDataMessageBuilder*) mergeFrom:(OWSSignalServiceProtosDataMessage*) other { + if (other == [OWSSignalServiceProtosDataMessage defaultInstance]) { + return self; + } + if (other.hasBody) { + [self setBody:other.body]; + } + if (other.attachmentsArray.count > 0) { + if (resultDataMessage.attachmentsArray == nil) { + resultDataMessage.attachmentsArray = [[NSMutableArray alloc] initWithArray:other.attachmentsArray]; + } else { + [resultDataMessage.attachmentsArray addObjectsFromArray:other.attachmentsArray]; + } + } + if (other.hasGroup) { + [self mergeGroup:other.group]; + } + if (other.hasFlags) { + [self setFlags:other.flags]; + } + [self mergeUnknownFields:other.unknownFields]; + return self; +} +- (OWSSignalServiceProtosDataMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { + return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; +} +- (OWSSignalServiceProtosDataMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; + while (YES) { + SInt32 tag = [input readTag]; + switch (tag) { + case 0: + [self setUnknownFields:[unknownFields build]]; + return self; + default: { + if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) { + [self setUnknownFields:[unknownFields build]]; + return self; + } + break; + } + case 10: { + [self setBody:[input readString]]; + break; + } + case 18: { + OWSSignalServiceProtosAttachmentPointerBuilder* subBuilder = [OWSSignalServiceProtosAttachmentPointer builder]; + [input readMessage:subBuilder extensionRegistry:extensionRegistry]; + [self addAttachments:[subBuilder buildPartial]]; + break; + } + case 26: { + OWSSignalServiceProtosGroupContextBuilder* subBuilder = [OWSSignalServiceProtosGroupContext builder]; + if (self.hasGroup) { + [subBuilder mergeFrom:self.group]; + } + [input readMessage:subBuilder extensionRegistry:extensionRegistry]; + [self setGroup:[subBuilder buildPartial]]; + break; + } + case 32: { + [self setFlags:[input readUInt32]]; + break; + } + } + } +} +- (BOOL) hasBody { + return resultDataMessage.hasBody; +} +- (NSString*) body { + return resultDataMessage.body; +} +- (OWSSignalServiceProtosDataMessageBuilder*) setBody:(NSString*) value { + resultDataMessage.hasBody = YES; + resultDataMessage.body = value; + return self; +} +- (OWSSignalServiceProtosDataMessageBuilder*) clearBody { + resultDataMessage.hasBody = NO; + resultDataMessage.body = @""; + return self; +} +- (NSMutableArray *)attachments { + return resultDataMessage.attachmentsArray; +} +- (OWSSignalServiceProtosAttachmentPointer*)attachmentsAtIndex:(NSUInteger)index { + return [resultDataMessage attachmentsAtIndex:index]; +} +- (OWSSignalServiceProtosDataMessageBuilder *)addAttachments:(OWSSignalServiceProtosAttachmentPointer*)value { + if (resultDataMessage.attachmentsArray == nil) { + resultDataMessage.attachmentsArray = [[NSMutableArray alloc]init]; + } + [resultDataMessage.attachmentsArray addObject:value]; + return self; +} +- (OWSSignalServiceProtosDataMessageBuilder *)setAttachmentsArray:(NSArray *)array { + resultDataMessage.attachmentsArray = [[NSMutableArray alloc]initWithArray:array]; + return self; +} +- (OWSSignalServiceProtosDataMessageBuilder *)clearAttachments { + resultDataMessage.attachmentsArray = nil; + return self; +} +- (BOOL) hasGroup { + return resultDataMessage.hasGroup; +} +- (OWSSignalServiceProtosGroupContext*) group { + return resultDataMessage.group; +} +- (OWSSignalServiceProtosDataMessageBuilder*) setGroup:(OWSSignalServiceProtosGroupContext*) value { + resultDataMessage.hasGroup = YES; + resultDataMessage.group = value; + return self; +} +- (OWSSignalServiceProtosDataMessageBuilder*) setGroupBuilder:(OWSSignalServiceProtosGroupContextBuilder*) builderForValue { + return [self setGroup:[builderForValue build]]; +} +- (OWSSignalServiceProtosDataMessageBuilder*) mergeGroup:(OWSSignalServiceProtosGroupContext*) value { + if (resultDataMessage.hasGroup && + resultDataMessage.group != [OWSSignalServiceProtosGroupContext defaultInstance]) { + resultDataMessage.group = + [[[OWSSignalServiceProtosGroupContext builderWithPrototype:resultDataMessage.group] mergeFrom:value] buildPartial]; + } else { + resultDataMessage.group = value; + } + resultDataMessage.hasGroup = YES; + return self; +} +- (OWSSignalServiceProtosDataMessageBuilder*) clearGroup { + resultDataMessage.hasGroup = NO; + resultDataMessage.group = [OWSSignalServiceProtosGroupContext defaultInstance]; + return self; +} +- (BOOL) hasFlags { + return resultDataMessage.hasFlags; +} +- (UInt32) flags { + return resultDataMessage.flags; +} +- (OWSSignalServiceProtosDataMessageBuilder*) setFlags:(UInt32) value { + resultDataMessage.hasFlags = YES; + resultDataMessage.flags = value; + return self; +} +- (OWSSignalServiceProtosDataMessageBuilder*) clearFlags { + resultDataMessage.hasFlags = NO; + resultDataMessage.flags = 0; + return self; +} +@end + +@interface OWSSignalServiceProtosSyncMessage () +@property (strong) OWSSignalServiceProtosSyncMessageSent* sent; +@property (strong) OWSSignalServiceProtosSyncMessageContacts* contacts; +@property (strong) OWSSignalServiceProtosSyncMessageGroups* groups; +@property (strong) OWSSignalServiceProtosSyncMessageRequest* request; +@property (strong) NSMutableArray * readArray; +@end + +@implementation OWSSignalServiceProtosSyncMessage + +- (BOOL) hasSent { + return !!hasSent_; +} +- (void) setHasSent:(BOOL) _value_ { + hasSent_ = !!_value_; +} +@synthesize sent; +- (BOOL) hasContacts { + return !!hasContacts_; +} +- (void) setHasContacts:(BOOL) _value_ { + hasContacts_ = !!_value_; +} +@synthesize contacts; +- (BOOL) hasGroups { + return !!hasGroups_; +} +- (void) setHasGroups:(BOOL) _value_ { + hasGroups_ = !!_value_; +} +@synthesize groups; +- (BOOL) hasRequest { + return !!hasRequest_; +} +- (void) setHasRequest:(BOOL) _value_ { + hasRequest_ = !!_value_; +} +@synthesize request; +@synthesize readArray; +@dynamic read; +- (instancetype) init { + if ((self = [super init])) { + self.sent = [OWSSignalServiceProtosSyncMessageSent defaultInstance]; + self.contacts = [OWSSignalServiceProtosSyncMessageContacts defaultInstance]; + self.groups = [OWSSignalServiceProtosSyncMessageGroups defaultInstance]; + self.request = [OWSSignalServiceProtosSyncMessageRequest defaultInstance]; + } + return self; +} +static OWSSignalServiceProtosSyncMessage* defaultOWSSignalServiceProtosSyncMessageInstance = nil; ++ (void) initialize { + if (self == [OWSSignalServiceProtosSyncMessage class]) { + defaultOWSSignalServiceProtosSyncMessageInstance = [[OWSSignalServiceProtosSyncMessage alloc] init]; + } +} ++ (instancetype) defaultInstance { + return defaultOWSSignalServiceProtosSyncMessageInstance; +} +- (instancetype) defaultInstance { + return defaultOWSSignalServiceProtosSyncMessageInstance; +} +- (NSArray *)read { + return readArray; +} +- (OWSSignalServiceProtosSyncMessageRead*)readAtIndex:(NSUInteger)index { + return [readArray objectAtIndex:index]; +} +- (BOOL) isInitialized { + return YES; +} +- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { + if (self.hasSent) { + [output writeMessage:1 value:self.sent]; + } + if (self.hasContacts) { + [output writeMessage:2 value:self.contacts]; + } + if (self.hasGroups) { + [output writeMessage:3 value:self.groups]; + } + if (self.hasRequest) { + [output writeMessage:4 value:self.request]; + } + [self.readArray enumerateObjectsUsingBlock:^(OWSSignalServiceProtosSyncMessageRead *element, NSUInteger idx, BOOL *stop) { + [output writeMessage:5 value:element]; + }]; + [self.unknownFields writeToCodedOutputStream:output]; +} +- (SInt32) serializedSize { + __block SInt32 size_ = memoizedSerializedSize; + if (size_ != -1) { + return size_; + } + + size_ = 0; + if (self.hasSent) { + size_ += computeMessageSize(1, self.sent); + } + if (self.hasContacts) { + size_ += computeMessageSize(2, self.contacts); + } + if (self.hasGroups) { + size_ += computeMessageSize(3, self.groups); + } + if (self.hasRequest) { + size_ += computeMessageSize(4, self.request); + } + [self.readArray enumerateObjectsUsingBlock:^(OWSSignalServiceProtosSyncMessageRead *element, NSUInteger idx, BOOL *stop) { + size_ += computeMessageSize(5, element); + }]; + size_ += self.unknownFields.serializedSize; + memoizedSerializedSize = size_; + return size_; +} ++ (OWSSignalServiceProtosSyncMessage*) parseFromData:(NSData*) data { + return (OWSSignalServiceProtosSyncMessage*)[[[OWSSignalServiceProtosSyncMessage builder] mergeFromData:data] build]; +} ++ (OWSSignalServiceProtosSyncMessage*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosSyncMessage*)[[[OWSSignalServiceProtosSyncMessage builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosSyncMessage*) parseFromInputStream:(NSInputStream*) input { + return (OWSSignalServiceProtosSyncMessage*)[[[OWSSignalServiceProtosSyncMessage builder] mergeFromInputStream:input] build]; +} ++ (OWSSignalServiceProtosSyncMessage*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosSyncMessage*)[[[OWSSignalServiceProtosSyncMessage builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosSyncMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input { + return (OWSSignalServiceProtosSyncMessage*)[[[OWSSignalServiceProtosSyncMessage builder] mergeFromCodedInputStream:input] build]; +} ++ (OWSSignalServiceProtosSyncMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosSyncMessage*)[[[OWSSignalServiceProtosSyncMessage builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosSyncMessageBuilder*) builder { + return [[OWSSignalServiceProtosSyncMessageBuilder alloc] init]; +} ++ (OWSSignalServiceProtosSyncMessageBuilder*) builderWithPrototype:(OWSSignalServiceProtosSyncMessage*) prototype { + return [[OWSSignalServiceProtosSyncMessage builder] mergeFrom:prototype]; +} +- (OWSSignalServiceProtosSyncMessageBuilder*) builder { + return [OWSSignalServiceProtosSyncMessage builder]; +} +- (OWSSignalServiceProtosSyncMessageBuilder*) toBuilder { + return [OWSSignalServiceProtosSyncMessage builderWithPrototype:self]; +} +- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { + if (self.hasSent) { + [output appendFormat:@"%@%@ {\n", indent, @"sent"]; + [self.sent writeDescriptionTo:output + withIndent:[NSString stringWithFormat:@"%@ ", indent]]; + [output appendFormat:@"%@}\n", indent]; + } + if (self.hasContacts) { + [output appendFormat:@"%@%@ {\n", indent, @"contacts"]; + [self.contacts writeDescriptionTo:output + withIndent:[NSString stringWithFormat:@"%@ ", indent]]; + [output appendFormat:@"%@}\n", indent]; + } + if (self.hasGroups) { + [output appendFormat:@"%@%@ {\n", indent, @"groups"]; + [self.groups writeDescriptionTo:output + withIndent:[NSString stringWithFormat:@"%@ ", indent]]; + [output appendFormat:@"%@}\n", indent]; + } + if (self.hasRequest) { + [output appendFormat:@"%@%@ {\n", indent, @"request"]; + [self.request writeDescriptionTo:output + withIndent:[NSString stringWithFormat:@"%@ ", indent]]; + [output appendFormat:@"%@}\n", indent]; + } + [self.readArray enumerateObjectsUsingBlock:^(OWSSignalServiceProtosSyncMessageRead *element, NSUInteger idx, BOOL *stop) { + [output appendFormat:@"%@%@ {\n", indent, @"read"]; + [element writeDescriptionTo:output + withIndent:[NSString stringWithFormat:@"%@ ", indent]]; + [output appendFormat:@"%@}\n", indent]; + }]; + [self.unknownFields writeDescriptionTo:output withIndent:indent]; +} +- (void) storeInDictionary:(NSMutableDictionary *)dictionary { + if (self.hasSent) { + NSMutableDictionary *messageDictionary = [NSMutableDictionary dictionary]; + [self.sent storeInDictionary:messageDictionary]; + [dictionary setObject:[NSDictionary dictionaryWithDictionary:messageDictionary] forKey:@"sent"]; + } + if (self.hasContacts) { + NSMutableDictionary *messageDictionary = [NSMutableDictionary dictionary]; + [self.contacts storeInDictionary:messageDictionary]; + [dictionary setObject:[NSDictionary dictionaryWithDictionary:messageDictionary] forKey:@"contacts"]; + } + if (self.hasGroups) { + NSMutableDictionary *messageDictionary = [NSMutableDictionary dictionary]; + [self.groups storeInDictionary:messageDictionary]; + [dictionary setObject:[NSDictionary dictionaryWithDictionary:messageDictionary] forKey:@"groups"]; + } + if (self.hasRequest) { + NSMutableDictionary *messageDictionary = [NSMutableDictionary dictionary]; + [self.request storeInDictionary:messageDictionary]; + [dictionary setObject:[NSDictionary dictionaryWithDictionary:messageDictionary] forKey:@"request"]; + } + for (OWSSignalServiceProtosSyncMessageRead* element in self.readArray) { + NSMutableDictionary *elementDictionary = [NSMutableDictionary dictionary]; + [element storeInDictionary:elementDictionary]; + [dictionary setObject:[NSDictionary dictionaryWithDictionary:elementDictionary] forKey:@"read"]; + } + [self.unknownFields storeInDictionary:dictionary]; +} +- (BOOL) isEqual:(id)other { + if (other == self) { + return YES; + } + if (![other isKindOfClass:[OWSSignalServiceProtosSyncMessage class]]) { + return NO; + } + OWSSignalServiceProtosSyncMessage *otherMessage = other; + return + self.hasSent == otherMessage.hasSent && + (!self.hasSent || [self.sent isEqual:otherMessage.sent]) && + self.hasContacts == otherMessage.hasContacts && + (!self.hasContacts || [self.contacts isEqual:otherMessage.contacts]) && + self.hasGroups == otherMessage.hasGroups && + (!self.hasGroups || [self.groups isEqual:otherMessage.groups]) && + self.hasRequest == otherMessage.hasRequest && + (!self.hasRequest || [self.request isEqual:otherMessage.request]) && + [self.readArray isEqualToArray:otherMessage.readArray] && + (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); +} +- (NSUInteger) hash { + __block NSUInteger hashCode = 7; + if (self.hasSent) { + hashCode = hashCode * 31 + [self.sent hash]; + } + if (self.hasContacts) { + hashCode = hashCode * 31 + [self.contacts hash]; + } + if (self.hasGroups) { + hashCode = hashCode * 31 + [self.groups hash]; + } + if (self.hasRequest) { + hashCode = hashCode * 31 + [self.request hash]; + } + [self.readArray enumerateObjectsUsingBlock:^(OWSSignalServiceProtosSyncMessageRead *element, NSUInteger idx, BOOL *stop) { + hashCode = hashCode * 31 + [element hash]; + }]; + hashCode = hashCode * 31 + [self.unknownFields hash]; + return hashCode; +} +@end + +@interface OWSSignalServiceProtosSyncMessageSent () +@property (strong) NSString* destination; +@property UInt64 timestamp; +@property (strong) OWSSignalServiceProtosDataMessage* message; +@end + +@implementation OWSSignalServiceProtosSyncMessageSent + +- (BOOL) hasDestination { + return !!hasDestination_; +} +- (void) setHasDestination:(BOOL) _value_ { + hasDestination_ = !!_value_; +} +@synthesize destination; +- (BOOL) hasTimestamp { + return !!hasTimestamp_; +} +- (void) setHasTimestamp:(BOOL) _value_ { + hasTimestamp_ = !!_value_; +} +@synthesize timestamp; +- (BOOL) hasMessage { + return !!hasMessage_; +} +- (void) setHasMessage:(BOOL) _value_ { + hasMessage_ = !!_value_; +} +@synthesize message; +- (instancetype) init { + if ((self = [super init])) { + self.destination = @""; + self.timestamp = 0L; + self.message = [OWSSignalServiceProtosDataMessage defaultInstance]; + } + return self; +} +static OWSSignalServiceProtosSyncMessageSent* defaultOWSSignalServiceProtosSyncMessageSentInstance = nil; ++ (void) initialize { + if (self == [OWSSignalServiceProtosSyncMessageSent class]) { + defaultOWSSignalServiceProtosSyncMessageSentInstance = [[OWSSignalServiceProtosSyncMessageSent alloc] init]; + } +} ++ (instancetype) defaultInstance { + return defaultOWSSignalServiceProtosSyncMessageSentInstance; +} +- (instancetype) defaultInstance { + return defaultOWSSignalServiceProtosSyncMessageSentInstance; +} +- (BOOL) isInitialized { + return YES; +} +- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { + if (self.hasDestination) { + [output writeString:1 value:self.destination]; + } + if (self.hasTimestamp) { + [output writeUInt64:2 value:self.timestamp]; + } + if (self.hasMessage) { + [output writeMessage:3 value:self.message]; + } + [self.unknownFields writeToCodedOutputStream:output]; +} +- (SInt32) serializedSize { + __block SInt32 size_ = memoizedSerializedSize; + if (size_ != -1) { + return size_; + } + + size_ = 0; + if (self.hasDestination) { + size_ += computeStringSize(1, self.destination); + } + if (self.hasTimestamp) { + size_ += computeUInt64Size(2, self.timestamp); + } + if (self.hasMessage) { + size_ += computeMessageSize(3, self.message); + } + size_ += self.unknownFields.serializedSize; + memoizedSerializedSize = size_; + return size_; +} ++ (OWSSignalServiceProtosSyncMessageSent*) parseFromData:(NSData*) data { + return (OWSSignalServiceProtosSyncMessageSent*)[[[OWSSignalServiceProtosSyncMessageSent builder] mergeFromData:data] build]; +} ++ (OWSSignalServiceProtosSyncMessageSent*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosSyncMessageSent*)[[[OWSSignalServiceProtosSyncMessageSent builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosSyncMessageSent*) parseFromInputStream:(NSInputStream*) input { + return (OWSSignalServiceProtosSyncMessageSent*)[[[OWSSignalServiceProtosSyncMessageSent builder] mergeFromInputStream:input] build]; +} ++ (OWSSignalServiceProtosSyncMessageSent*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosSyncMessageSent*)[[[OWSSignalServiceProtosSyncMessageSent builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosSyncMessageSent*) parseFromCodedInputStream:(PBCodedInputStream*) input { + return (OWSSignalServiceProtosSyncMessageSent*)[[[OWSSignalServiceProtosSyncMessageSent builder] mergeFromCodedInputStream:input] build]; +} ++ (OWSSignalServiceProtosSyncMessageSent*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosSyncMessageSent*)[[[OWSSignalServiceProtosSyncMessageSent builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosSyncMessageSentBuilder*) builder { + return [[OWSSignalServiceProtosSyncMessageSentBuilder alloc] init]; +} ++ (OWSSignalServiceProtosSyncMessageSentBuilder*) builderWithPrototype:(OWSSignalServiceProtosSyncMessageSent*) prototype { + return [[OWSSignalServiceProtosSyncMessageSent builder] mergeFrom:prototype]; +} +- (OWSSignalServiceProtosSyncMessageSentBuilder*) builder { + return [OWSSignalServiceProtosSyncMessageSent builder]; +} +- (OWSSignalServiceProtosSyncMessageSentBuilder*) toBuilder { + return [OWSSignalServiceProtosSyncMessageSent builderWithPrototype:self]; +} +- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { + if (self.hasDestination) { + [output appendFormat:@"%@%@: %@\n", indent, @"destination", self.destination]; + } + if (self.hasTimestamp) { + [output appendFormat:@"%@%@: %@\n", indent, @"timestamp", [NSNumber numberWithLongLong:self.timestamp]]; + } + if (self.hasMessage) { + [output appendFormat:@"%@%@ {\n", indent, @"message"]; + [self.message writeDescriptionTo:output + withIndent:[NSString stringWithFormat:@"%@ ", indent]]; + [output appendFormat:@"%@}\n", indent]; + } + [self.unknownFields writeDescriptionTo:output withIndent:indent]; +} +- (void) storeInDictionary:(NSMutableDictionary *)dictionary { + if (self.hasDestination) { + [dictionary setObject: self.destination forKey: @"destination"]; + } + if (self.hasTimestamp) { + [dictionary setObject: [NSNumber numberWithLongLong:self.timestamp] forKey: @"timestamp"]; + } + if (self.hasMessage) { + NSMutableDictionary *messageDictionary = [NSMutableDictionary dictionary]; + [self.message storeInDictionary:messageDictionary]; + [dictionary setObject:[NSDictionary dictionaryWithDictionary:messageDictionary] forKey:@"message"]; + } + [self.unknownFields storeInDictionary:dictionary]; +} +- (BOOL) isEqual:(id)other { + if (other == self) { + return YES; + } + if (![other isKindOfClass:[OWSSignalServiceProtosSyncMessageSent class]]) { + return NO; + } + OWSSignalServiceProtosSyncMessageSent *otherMessage = other; + return + self.hasDestination == otherMessage.hasDestination && + (!self.hasDestination || [self.destination isEqual:otherMessage.destination]) && + self.hasTimestamp == otherMessage.hasTimestamp && + (!self.hasTimestamp || self.timestamp == otherMessage.timestamp) && + self.hasMessage == otherMessage.hasMessage && + (!self.hasMessage || [self.message isEqual:otherMessage.message]) && + (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); +} +- (NSUInteger) hash { + __block NSUInteger hashCode = 7; + if (self.hasDestination) { + hashCode = hashCode * 31 + [self.destination hash]; + } + if (self.hasTimestamp) { + hashCode = hashCode * 31 + [[NSNumber numberWithLongLong:self.timestamp] hash]; + } + if (self.hasMessage) { + hashCode = hashCode * 31 + [self.message hash]; + } + hashCode = hashCode * 31 + [self.unknownFields hash]; + return hashCode; +} +@end + +@interface OWSSignalServiceProtosSyncMessageSentBuilder() +@property (strong) OWSSignalServiceProtosSyncMessageSent* resultSent; +@end + +@implementation OWSSignalServiceProtosSyncMessageSentBuilder +@synthesize resultSent; +- (instancetype) init { + if ((self = [super init])) { + self.resultSent = [[OWSSignalServiceProtosSyncMessageSent alloc] init]; + } + return self; +} +- (PBGeneratedMessage*) internalGetResult { + return resultSent; +} +- (OWSSignalServiceProtosSyncMessageSentBuilder*) clear { + self.resultSent = [[OWSSignalServiceProtosSyncMessageSent alloc] init]; + return self; +} +- (OWSSignalServiceProtosSyncMessageSentBuilder*) clone { + return [OWSSignalServiceProtosSyncMessageSent builderWithPrototype:resultSent]; +} +- (OWSSignalServiceProtosSyncMessageSent*) defaultInstance { + return [OWSSignalServiceProtosSyncMessageSent defaultInstance]; +} +- (OWSSignalServiceProtosSyncMessageSent*) build { + [self checkInitialized]; + return [self buildPartial]; +} +- (OWSSignalServiceProtosSyncMessageSent*) buildPartial { + OWSSignalServiceProtosSyncMessageSent* returnMe = resultSent; + self.resultSent = nil; + return returnMe; +} +- (OWSSignalServiceProtosSyncMessageSentBuilder*) mergeFrom:(OWSSignalServiceProtosSyncMessageSent*) other { + if (other == [OWSSignalServiceProtosSyncMessageSent defaultInstance]) { + return self; + } + if (other.hasDestination) { + [self setDestination:other.destination]; + } + if (other.hasTimestamp) { + [self setTimestamp:other.timestamp]; + } + if (other.hasMessage) { + [self mergeMessage:other.message]; + } + [self mergeUnknownFields:other.unknownFields]; + return self; +} +- (OWSSignalServiceProtosSyncMessageSentBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { + return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; +} +- (OWSSignalServiceProtosSyncMessageSentBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; + while (YES) { + SInt32 tag = [input readTag]; + switch (tag) { + case 0: + [self setUnknownFields:[unknownFields build]]; + return self; + default: { + if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) { + [self setUnknownFields:[unknownFields build]]; + return self; + } + break; + } + case 10: { + [self setDestination:[input readString]]; + break; + } + case 16: { + [self setTimestamp:[input readUInt64]]; + break; + } + case 26: { + OWSSignalServiceProtosDataMessageBuilder* subBuilder = [OWSSignalServiceProtosDataMessage builder]; + if (self.hasMessage) { + [subBuilder mergeFrom:self.message]; + } + [input readMessage:subBuilder extensionRegistry:extensionRegistry]; + [self setMessage:[subBuilder buildPartial]]; + break; + } + } + } +} +- (BOOL) hasDestination { + return resultSent.hasDestination; +} +- (NSString*) destination { + return resultSent.destination; +} +- (OWSSignalServiceProtosSyncMessageSentBuilder*) setDestination:(NSString*) value { + resultSent.hasDestination = YES; + resultSent.destination = value; + return self; +} +- (OWSSignalServiceProtosSyncMessageSentBuilder*) clearDestination { + resultSent.hasDestination = NO; + resultSent.destination = @""; + return self; +} +- (BOOL) hasTimestamp { + return resultSent.hasTimestamp; +} +- (UInt64) timestamp { + return resultSent.timestamp; +} +- (OWSSignalServiceProtosSyncMessageSentBuilder*) setTimestamp:(UInt64) value { + resultSent.hasTimestamp = YES; + resultSent.timestamp = value; + return self; +} +- (OWSSignalServiceProtosSyncMessageSentBuilder*) clearTimestamp { + resultSent.hasTimestamp = NO; + resultSent.timestamp = 0L; + return self; +} +- (BOOL) hasMessage { + return resultSent.hasMessage; +} +- (OWSSignalServiceProtosDataMessage*) message { + return resultSent.message; +} +- (OWSSignalServiceProtosSyncMessageSentBuilder*) setMessage:(OWSSignalServiceProtosDataMessage*) value { + resultSent.hasMessage = YES; + resultSent.message = value; + return self; +} +- (OWSSignalServiceProtosSyncMessageSentBuilder*) setMessageBuilder:(OWSSignalServiceProtosDataMessageBuilder*) builderForValue { + return [self setMessage:[builderForValue build]]; +} +- (OWSSignalServiceProtosSyncMessageSentBuilder*) mergeMessage:(OWSSignalServiceProtosDataMessage*) value { + if (resultSent.hasMessage && + resultSent.message != [OWSSignalServiceProtosDataMessage defaultInstance]) { + resultSent.message = + [[[OWSSignalServiceProtosDataMessage builderWithPrototype:resultSent.message] mergeFrom:value] buildPartial]; + } else { + resultSent.message = value; + } + resultSent.hasMessage = YES; + return self; +} +- (OWSSignalServiceProtosSyncMessageSentBuilder*) clearMessage { + resultSent.hasMessage = NO; + resultSent.message = [OWSSignalServiceProtosDataMessage defaultInstance]; + return self; +} +@end + +@interface OWSSignalServiceProtosSyncMessageContacts () +@property (strong) OWSSignalServiceProtosAttachmentPointer* blob; +@end + +@implementation OWSSignalServiceProtosSyncMessageContacts + +- (BOOL) hasBlob { + return !!hasBlob_; +} +- (void) setHasBlob:(BOOL) _value_ { + hasBlob_ = !!_value_; +} +@synthesize blob; +- (instancetype) init { + if ((self = [super init])) { + self.blob = [OWSSignalServiceProtosAttachmentPointer defaultInstance]; + } + return self; +} +static OWSSignalServiceProtosSyncMessageContacts* defaultOWSSignalServiceProtosSyncMessageContactsInstance = nil; ++ (void) initialize { + if (self == [OWSSignalServiceProtosSyncMessageContacts class]) { + defaultOWSSignalServiceProtosSyncMessageContactsInstance = [[OWSSignalServiceProtosSyncMessageContacts alloc] init]; + } +} ++ (instancetype) defaultInstance { + return defaultOWSSignalServiceProtosSyncMessageContactsInstance; +} +- (instancetype) defaultInstance { + return defaultOWSSignalServiceProtosSyncMessageContactsInstance; +} +- (BOOL) isInitialized { + return YES; +} +- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { + if (self.hasBlob) { + [output writeMessage:1 value:self.blob]; + } + [self.unknownFields writeToCodedOutputStream:output]; +} +- (SInt32) serializedSize { + __block SInt32 size_ = memoizedSerializedSize; + if (size_ != -1) { + return size_; + } + + size_ = 0; + if (self.hasBlob) { + size_ += computeMessageSize(1, self.blob); + } + size_ += self.unknownFields.serializedSize; + memoizedSerializedSize = size_; + return size_; +} ++ (OWSSignalServiceProtosSyncMessageContacts*) parseFromData:(NSData*) data { + return (OWSSignalServiceProtosSyncMessageContacts*)[[[OWSSignalServiceProtosSyncMessageContacts builder] mergeFromData:data] build]; +} ++ (OWSSignalServiceProtosSyncMessageContacts*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosSyncMessageContacts*)[[[OWSSignalServiceProtosSyncMessageContacts builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosSyncMessageContacts*) parseFromInputStream:(NSInputStream*) input { + return (OWSSignalServiceProtosSyncMessageContacts*)[[[OWSSignalServiceProtosSyncMessageContacts builder] mergeFromInputStream:input] build]; +} ++ (OWSSignalServiceProtosSyncMessageContacts*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosSyncMessageContacts*)[[[OWSSignalServiceProtosSyncMessageContacts builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosSyncMessageContacts*) parseFromCodedInputStream:(PBCodedInputStream*) input { + return (OWSSignalServiceProtosSyncMessageContacts*)[[[OWSSignalServiceProtosSyncMessageContacts builder] mergeFromCodedInputStream:input] build]; +} ++ (OWSSignalServiceProtosSyncMessageContacts*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosSyncMessageContacts*)[[[OWSSignalServiceProtosSyncMessageContacts builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosSyncMessageContactsBuilder*) builder { + return [[OWSSignalServiceProtosSyncMessageContactsBuilder alloc] init]; +} ++ (OWSSignalServiceProtosSyncMessageContactsBuilder*) builderWithPrototype:(OWSSignalServiceProtosSyncMessageContacts*) prototype { + return [[OWSSignalServiceProtosSyncMessageContacts builder] mergeFrom:prototype]; +} +- (OWSSignalServiceProtosSyncMessageContactsBuilder*) builder { + return [OWSSignalServiceProtosSyncMessageContacts builder]; +} +- (OWSSignalServiceProtosSyncMessageContactsBuilder*) toBuilder { + return [OWSSignalServiceProtosSyncMessageContacts builderWithPrototype:self]; +} +- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { + if (self.hasBlob) { + [output appendFormat:@"%@%@ {\n", indent, @"blob"]; + [self.blob writeDescriptionTo:output + withIndent:[NSString stringWithFormat:@"%@ ", indent]]; + [output appendFormat:@"%@}\n", indent]; + } + [self.unknownFields writeDescriptionTo:output withIndent:indent]; +} +- (void) storeInDictionary:(NSMutableDictionary *)dictionary { + if (self.hasBlob) { + NSMutableDictionary *messageDictionary = [NSMutableDictionary dictionary]; + [self.blob storeInDictionary:messageDictionary]; + [dictionary setObject:[NSDictionary dictionaryWithDictionary:messageDictionary] forKey:@"blob"]; + } + [self.unknownFields storeInDictionary:dictionary]; +} +- (BOOL) isEqual:(id)other { + if (other == self) { + return YES; + } + if (![other isKindOfClass:[OWSSignalServiceProtosSyncMessageContacts class]]) { + return NO; + } + OWSSignalServiceProtosSyncMessageContacts *otherMessage = other; + return + self.hasBlob == otherMessage.hasBlob && + (!self.hasBlob || [self.blob isEqual:otherMessage.blob]) && + (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); +} +- (NSUInteger) hash { + __block NSUInteger hashCode = 7; + if (self.hasBlob) { + hashCode = hashCode * 31 + [self.blob hash]; + } + hashCode = hashCode * 31 + [self.unknownFields hash]; + return hashCode; +} +@end + +@interface OWSSignalServiceProtosSyncMessageContactsBuilder() +@property (strong) OWSSignalServiceProtosSyncMessageContacts* resultContacts; +@end + +@implementation OWSSignalServiceProtosSyncMessageContactsBuilder +@synthesize resultContacts; +- (instancetype) init { + if ((self = [super init])) { + self.resultContacts = [[OWSSignalServiceProtosSyncMessageContacts alloc] init]; + } + return self; +} +- (PBGeneratedMessage*) internalGetResult { + return resultContacts; +} +- (OWSSignalServiceProtosSyncMessageContactsBuilder*) clear { + self.resultContacts = [[OWSSignalServiceProtosSyncMessageContacts alloc] init]; + return self; +} +- (OWSSignalServiceProtosSyncMessageContactsBuilder*) clone { + return [OWSSignalServiceProtosSyncMessageContacts builderWithPrototype:resultContacts]; +} +- (OWSSignalServiceProtosSyncMessageContacts*) defaultInstance { + return [OWSSignalServiceProtosSyncMessageContacts defaultInstance]; +} +- (OWSSignalServiceProtosSyncMessageContacts*) build { + [self checkInitialized]; + return [self buildPartial]; +} +- (OWSSignalServiceProtosSyncMessageContacts*) buildPartial { + OWSSignalServiceProtosSyncMessageContacts* returnMe = resultContacts; + self.resultContacts = nil; + return returnMe; +} +- (OWSSignalServiceProtosSyncMessageContactsBuilder*) mergeFrom:(OWSSignalServiceProtosSyncMessageContacts*) other { + if (other == [OWSSignalServiceProtosSyncMessageContacts defaultInstance]) { + return self; + } + if (other.hasBlob) { + [self mergeBlob:other.blob]; + } + [self mergeUnknownFields:other.unknownFields]; + return self; +} +- (OWSSignalServiceProtosSyncMessageContactsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { + return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; +} +- (OWSSignalServiceProtosSyncMessageContactsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; + while (YES) { + SInt32 tag = [input readTag]; + switch (tag) { + case 0: + [self setUnknownFields:[unknownFields build]]; + return self; + default: { + if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) { + [self setUnknownFields:[unknownFields build]]; + return self; + } + break; + } + case 10: { + OWSSignalServiceProtosAttachmentPointerBuilder* subBuilder = [OWSSignalServiceProtosAttachmentPointer builder]; + if (self.hasBlob) { + [subBuilder mergeFrom:self.blob]; + } + [input readMessage:subBuilder extensionRegistry:extensionRegistry]; + [self setBlob:[subBuilder buildPartial]]; + break; + } + } + } +} +- (BOOL) hasBlob { + return resultContacts.hasBlob; +} +- (OWSSignalServiceProtosAttachmentPointer*) blob { + return resultContacts.blob; +} +- (OWSSignalServiceProtosSyncMessageContactsBuilder*) setBlob:(OWSSignalServiceProtosAttachmentPointer*) value { + resultContacts.hasBlob = YES; + resultContacts.blob = value; + return self; +} +- (OWSSignalServiceProtosSyncMessageContactsBuilder*) setBlobBuilder:(OWSSignalServiceProtosAttachmentPointerBuilder*) builderForValue { + return [self setBlob:[builderForValue build]]; +} +- (OWSSignalServiceProtosSyncMessageContactsBuilder*) mergeBlob:(OWSSignalServiceProtosAttachmentPointer*) value { + if (resultContacts.hasBlob && + resultContacts.blob != [OWSSignalServiceProtosAttachmentPointer defaultInstance]) { + resultContacts.blob = + [[[OWSSignalServiceProtosAttachmentPointer builderWithPrototype:resultContacts.blob] mergeFrom:value] buildPartial]; + } else { + resultContacts.blob = value; + } + resultContacts.hasBlob = YES; + return self; +} +- (OWSSignalServiceProtosSyncMessageContactsBuilder*) clearBlob { + resultContacts.hasBlob = NO; + resultContacts.blob = [OWSSignalServiceProtosAttachmentPointer defaultInstance]; + return self; +} +@end + +@interface OWSSignalServiceProtosSyncMessageGroups () +@property (strong) OWSSignalServiceProtosAttachmentPointer* blob; +@end + +@implementation OWSSignalServiceProtosSyncMessageGroups + +- (BOOL) hasBlob { + return !!hasBlob_; +} +- (void) setHasBlob:(BOOL) _value_ { + hasBlob_ = !!_value_; +} +@synthesize blob; +- (instancetype) init { + if ((self = [super init])) { + self.blob = [OWSSignalServiceProtosAttachmentPointer defaultInstance]; + } + return self; +} +static OWSSignalServiceProtosSyncMessageGroups* defaultOWSSignalServiceProtosSyncMessageGroupsInstance = nil; ++ (void) initialize { + if (self == [OWSSignalServiceProtosSyncMessageGroups class]) { + defaultOWSSignalServiceProtosSyncMessageGroupsInstance = [[OWSSignalServiceProtosSyncMessageGroups alloc] init]; + } +} ++ (instancetype) defaultInstance { + return defaultOWSSignalServiceProtosSyncMessageGroupsInstance; +} +- (instancetype) defaultInstance { + return defaultOWSSignalServiceProtosSyncMessageGroupsInstance; +} +- (BOOL) isInitialized { + return YES; +} +- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { + if (self.hasBlob) { + [output writeMessage:1 value:self.blob]; + } + [self.unknownFields writeToCodedOutputStream:output]; +} +- (SInt32) serializedSize { + __block SInt32 size_ = memoizedSerializedSize; + if (size_ != -1) { + return size_; + } + + size_ = 0; + if (self.hasBlob) { + size_ += computeMessageSize(1, self.blob); + } + size_ += self.unknownFields.serializedSize; + memoizedSerializedSize = size_; + return size_; +} ++ (OWSSignalServiceProtosSyncMessageGroups*) parseFromData:(NSData*) data { + return (OWSSignalServiceProtosSyncMessageGroups*)[[[OWSSignalServiceProtosSyncMessageGroups builder] mergeFromData:data] build]; +} ++ (OWSSignalServiceProtosSyncMessageGroups*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosSyncMessageGroups*)[[[OWSSignalServiceProtosSyncMessageGroups builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosSyncMessageGroups*) parseFromInputStream:(NSInputStream*) input { + return (OWSSignalServiceProtosSyncMessageGroups*)[[[OWSSignalServiceProtosSyncMessageGroups builder] mergeFromInputStream:input] build]; +} ++ (OWSSignalServiceProtosSyncMessageGroups*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosSyncMessageGroups*)[[[OWSSignalServiceProtosSyncMessageGroups builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosSyncMessageGroups*) parseFromCodedInputStream:(PBCodedInputStream*) input { + return (OWSSignalServiceProtosSyncMessageGroups*)[[[OWSSignalServiceProtosSyncMessageGroups builder] mergeFromCodedInputStream:input] build]; +} ++ (OWSSignalServiceProtosSyncMessageGroups*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosSyncMessageGroups*)[[[OWSSignalServiceProtosSyncMessageGroups builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosSyncMessageGroupsBuilder*) builder { + return [[OWSSignalServiceProtosSyncMessageGroupsBuilder alloc] init]; +} ++ (OWSSignalServiceProtosSyncMessageGroupsBuilder*) builderWithPrototype:(OWSSignalServiceProtosSyncMessageGroups*) prototype { + return [[OWSSignalServiceProtosSyncMessageGroups builder] mergeFrom:prototype]; +} +- (OWSSignalServiceProtosSyncMessageGroupsBuilder*) builder { + return [OWSSignalServiceProtosSyncMessageGroups builder]; +} +- (OWSSignalServiceProtosSyncMessageGroupsBuilder*) toBuilder { + return [OWSSignalServiceProtosSyncMessageGroups builderWithPrototype:self]; +} +- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { + if (self.hasBlob) { + [output appendFormat:@"%@%@ {\n", indent, @"blob"]; + [self.blob writeDescriptionTo:output + withIndent:[NSString stringWithFormat:@"%@ ", indent]]; + [output appendFormat:@"%@}\n", indent]; + } + [self.unknownFields writeDescriptionTo:output withIndent:indent]; +} +- (void) storeInDictionary:(NSMutableDictionary *)dictionary { + if (self.hasBlob) { + NSMutableDictionary *messageDictionary = [NSMutableDictionary dictionary]; + [self.blob storeInDictionary:messageDictionary]; + [dictionary setObject:[NSDictionary dictionaryWithDictionary:messageDictionary] forKey:@"blob"]; + } + [self.unknownFields storeInDictionary:dictionary]; +} +- (BOOL) isEqual:(id)other { + if (other == self) { + return YES; + } + if (![other isKindOfClass:[OWSSignalServiceProtosSyncMessageGroups class]]) { + return NO; + } + OWSSignalServiceProtosSyncMessageGroups *otherMessage = other; + return + self.hasBlob == otherMessage.hasBlob && + (!self.hasBlob || [self.blob isEqual:otherMessage.blob]) && + (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); +} +- (NSUInteger) hash { + __block NSUInteger hashCode = 7; + if (self.hasBlob) { + hashCode = hashCode * 31 + [self.blob hash]; + } + hashCode = hashCode * 31 + [self.unknownFields hash]; + return hashCode; +} +@end + +@interface OWSSignalServiceProtosSyncMessageGroupsBuilder() +@property (strong) OWSSignalServiceProtosSyncMessageGroups* resultGroups; +@end + +@implementation OWSSignalServiceProtosSyncMessageGroupsBuilder +@synthesize resultGroups; +- (instancetype) init { + if ((self = [super init])) { + self.resultGroups = [[OWSSignalServiceProtosSyncMessageGroups alloc] init]; + } + return self; +} +- (PBGeneratedMessage*) internalGetResult { + return resultGroups; +} +- (OWSSignalServiceProtosSyncMessageGroupsBuilder*) clear { + self.resultGroups = [[OWSSignalServiceProtosSyncMessageGroups alloc] init]; + return self; +} +- (OWSSignalServiceProtosSyncMessageGroupsBuilder*) clone { + return [OWSSignalServiceProtosSyncMessageGroups builderWithPrototype:resultGroups]; +} +- (OWSSignalServiceProtosSyncMessageGroups*) defaultInstance { + return [OWSSignalServiceProtosSyncMessageGroups defaultInstance]; +} +- (OWSSignalServiceProtosSyncMessageGroups*) build { + [self checkInitialized]; + return [self buildPartial]; +} +- (OWSSignalServiceProtosSyncMessageGroups*) buildPartial { + OWSSignalServiceProtosSyncMessageGroups* returnMe = resultGroups; + self.resultGroups = nil; + return returnMe; +} +- (OWSSignalServiceProtosSyncMessageGroupsBuilder*) mergeFrom:(OWSSignalServiceProtosSyncMessageGroups*) other { + if (other == [OWSSignalServiceProtosSyncMessageGroups defaultInstance]) { + return self; + } + if (other.hasBlob) { + [self mergeBlob:other.blob]; + } + [self mergeUnknownFields:other.unknownFields]; + return self; +} +- (OWSSignalServiceProtosSyncMessageGroupsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { + return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; +} +- (OWSSignalServiceProtosSyncMessageGroupsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; + while (YES) { + SInt32 tag = [input readTag]; + switch (tag) { + case 0: + [self setUnknownFields:[unknownFields build]]; + return self; + default: { + if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) { + [self setUnknownFields:[unknownFields build]]; + return self; + } + break; + } + case 10: { + OWSSignalServiceProtosAttachmentPointerBuilder* subBuilder = [OWSSignalServiceProtosAttachmentPointer builder]; + if (self.hasBlob) { + [subBuilder mergeFrom:self.blob]; + } + [input readMessage:subBuilder extensionRegistry:extensionRegistry]; + [self setBlob:[subBuilder buildPartial]]; + break; + } + } + } +} +- (BOOL) hasBlob { + return resultGroups.hasBlob; +} +- (OWSSignalServiceProtosAttachmentPointer*) blob { + return resultGroups.blob; +} +- (OWSSignalServiceProtosSyncMessageGroupsBuilder*) setBlob:(OWSSignalServiceProtosAttachmentPointer*) value { + resultGroups.hasBlob = YES; + resultGroups.blob = value; + return self; +} +- (OWSSignalServiceProtosSyncMessageGroupsBuilder*) setBlobBuilder:(OWSSignalServiceProtosAttachmentPointerBuilder*) builderForValue { + return [self setBlob:[builderForValue build]]; +} +- (OWSSignalServiceProtosSyncMessageGroupsBuilder*) mergeBlob:(OWSSignalServiceProtosAttachmentPointer*) value { + if (resultGroups.hasBlob && + resultGroups.blob != [OWSSignalServiceProtosAttachmentPointer defaultInstance]) { + resultGroups.blob = + [[[OWSSignalServiceProtosAttachmentPointer builderWithPrototype:resultGroups.blob] mergeFrom:value] buildPartial]; + } else { + resultGroups.blob = value; + } + resultGroups.hasBlob = YES; + return self; +} +- (OWSSignalServiceProtosSyncMessageGroupsBuilder*) clearBlob { + resultGroups.hasBlob = NO; + resultGroups.blob = [OWSSignalServiceProtosAttachmentPointer defaultInstance]; + return self; +} +@end + +@interface OWSSignalServiceProtosSyncMessageRequest () +@property OWSSignalServiceProtosSyncMessageRequestType type; +@end + +@implementation OWSSignalServiceProtosSyncMessageRequest + +- (BOOL) hasType { + return !!hasType_; +} +- (void) setHasType:(BOOL) _value_ { + hasType_ = !!_value_; +} +@synthesize type; +- (instancetype) init { + if ((self = [super init])) { + self.type = OWSSignalServiceProtosSyncMessageRequestTypeUnknown; + } + return self; +} +static OWSSignalServiceProtosSyncMessageRequest* defaultOWSSignalServiceProtosSyncMessageRequestInstance = nil; ++ (void) initialize { + if (self == [OWSSignalServiceProtosSyncMessageRequest class]) { + defaultOWSSignalServiceProtosSyncMessageRequestInstance = [[OWSSignalServiceProtosSyncMessageRequest alloc] init]; + } +} ++ (instancetype) defaultInstance { + return defaultOWSSignalServiceProtosSyncMessageRequestInstance; +} +- (instancetype) defaultInstance { + return defaultOWSSignalServiceProtosSyncMessageRequestInstance; +} +- (BOOL) isInitialized { + return YES; +} +- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { + if (self.hasType) { + [output writeEnum:1 value:self.type]; + } + [self.unknownFields writeToCodedOutputStream:output]; +} +- (SInt32) serializedSize { + __block SInt32 size_ = memoizedSerializedSize; + if (size_ != -1) { + return size_; + } + + size_ = 0; + if (self.hasType) { + size_ += computeEnumSize(1, self.type); + } + size_ += self.unknownFields.serializedSize; + memoizedSerializedSize = size_; + return size_; +} ++ (OWSSignalServiceProtosSyncMessageRequest*) parseFromData:(NSData*) data { + return (OWSSignalServiceProtosSyncMessageRequest*)[[[OWSSignalServiceProtosSyncMessageRequest builder] mergeFromData:data] build]; +} ++ (OWSSignalServiceProtosSyncMessageRequest*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosSyncMessageRequest*)[[[OWSSignalServiceProtosSyncMessageRequest builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosSyncMessageRequest*) parseFromInputStream:(NSInputStream*) input { + return (OWSSignalServiceProtosSyncMessageRequest*)[[[OWSSignalServiceProtosSyncMessageRequest builder] mergeFromInputStream:input] build]; +} ++ (OWSSignalServiceProtosSyncMessageRequest*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosSyncMessageRequest*)[[[OWSSignalServiceProtosSyncMessageRequest builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosSyncMessageRequest*) parseFromCodedInputStream:(PBCodedInputStream*) input { + return (OWSSignalServiceProtosSyncMessageRequest*)[[[OWSSignalServiceProtosSyncMessageRequest builder] mergeFromCodedInputStream:input] build]; +} ++ (OWSSignalServiceProtosSyncMessageRequest*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosSyncMessageRequest*)[[[OWSSignalServiceProtosSyncMessageRequest builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosSyncMessageRequestBuilder*) builder { + return [[OWSSignalServiceProtosSyncMessageRequestBuilder alloc] init]; +} ++ (OWSSignalServiceProtosSyncMessageRequestBuilder*) builderWithPrototype:(OWSSignalServiceProtosSyncMessageRequest*) prototype { + return [[OWSSignalServiceProtosSyncMessageRequest builder] mergeFrom:prototype]; +} +- (OWSSignalServiceProtosSyncMessageRequestBuilder*) builder { + return [OWSSignalServiceProtosSyncMessageRequest builder]; +} +- (OWSSignalServiceProtosSyncMessageRequestBuilder*) toBuilder { + return [OWSSignalServiceProtosSyncMessageRequest builderWithPrototype:self]; +} +- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { + if (self.hasType) { + [output appendFormat:@"%@%@: %@\n", indent, @"type", NSStringFromOWSSignalServiceProtosSyncMessageRequestType(self.type)]; + } + [self.unknownFields writeDescriptionTo:output withIndent:indent]; +} +- (void) storeInDictionary:(NSMutableDictionary *)dictionary { + if (self.hasType) { + [dictionary setObject: @(self.type) forKey: @"type"]; + } + [self.unknownFields storeInDictionary:dictionary]; +} +- (BOOL) isEqual:(id)other { + if (other == self) { + return YES; + } + if (![other isKindOfClass:[OWSSignalServiceProtosSyncMessageRequest class]]) { + return NO; + } + OWSSignalServiceProtosSyncMessageRequest *otherMessage = other; + return + self.hasType == otherMessage.hasType && + (!self.hasType || self.type == otherMessage.type) && + (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); +} +- (NSUInteger) hash { + __block NSUInteger hashCode = 7; + if (self.hasType) { + hashCode = hashCode * 31 + self.type; + } + hashCode = hashCode * 31 + [self.unknownFields hash]; + return hashCode; +} +@end + +BOOL OWSSignalServiceProtosSyncMessageRequestTypeIsValidValue(OWSSignalServiceProtosSyncMessageRequestType value) { + switch (value) { + case OWSSignalServiceProtosSyncMessageRequestTypeUnknown: + case OWSSignalServiceProtosSyncMessageRequestTypeContacts: + case OWSSignalServiceProtosSyncMessageRequestTypeGroups: + return YES; + default: + return NO; + } +} +NSString *NSStringFromOWSSignalServiceProtosSyncMessageRequestType(OWSSignalServiceProtosSyncMessageRequestType value) { + switch (value) { + case OWSSignalServiceProtosSyncMessageRequestTypeUnknown: + return @"OWSSignalServiceProtosSyncMessageRequestTypeUnknown"; + case OWSSignalServiceProtosSyncMessageRequestTypeContacts: + return @"OWSSignalServiceProtosSyncMessageRequestTypeContacts"; + case OWSSignalServiceProtosSyncMessageRequestTypeGroups: + return @"OWSSignalServiceProtosSyncMessageRequestTypeGroups"; + default: + return nil; + } +} + +@interface OWSSignalServiceProtosSyncMessageRequestBuilder() +@property (strong) OWSSignalServiceProtosSyncMessageRequest* resultRequest; +@end + +@implementation OWSSignalServiceProtosSyncMessageRequestBuilder +@synthesize resultRequest; +- (instancetype) init { + if ((self = [super init])) { + self.resultRequest = [[OWSSignalServiceProtosSyncMessageRequest alloc] init]; + } + return self; +} +- (PBGeneratedMessage*) internalGetResult { + return resultRequest; +} +- (OWSSignalServiceProtosSyncMessageRequestBuilder*) clear { + self.resultRequest = [[OWSSignalServiceProtosSyncMessageRequest alloc] init]; + return self; +} +- (OWSSignalServiceProtosSyncMessageRequestBuilder*) clone { + return [OWSSignalServiceProtosSyncMessageRequest builderWithPrototype:resultRequest]; +} +- (OWSSignalServiceProtosSyncMessageRequest*) defaultInstance { + return [OWSSignalServiceProtosSyncMessageRequest defaultInstance]; +} +- (OWSSignalServiceProtosSyncMessageRequest*) build { + [self checkInitialized]; + return [self buildPartial]; +} +- (OWSSignalServiceProtosSyncMessageRequest*) buildPartial { + OWSSignalServiceProtosSyncMessageRequest* returnMe = resultRequest; + self.resultRequest = nil; + return returnMe; +} +- (OWSSignalServiceProtosSyncMessageRequestBuilder*) mergeFrom:(OWSSignalServiceProtosSyncMessageRequest*) other { + if (other == [OWSSignalServiceProtosSyncMessageRequest defaultInstance]) { + return self; + } + if (other.hasType) { + [self setType:other.type]; + } + [self mergeUnknownFields:other.unknownFields]; + return self; +} +- (OWSSignalServiceProtosSyncMessageRequestBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { + return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; +} +- (OWSSignalServiceProtosSyncMessageRequestBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; + while (YES) { + SInt32 tag = [input readTag]; + switch (tag) { + case 0: + [self setUnknownFields:[unknownFields build]]; + return self; + default: { + if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) { + [self setUnknownFields:[unknownFields build]]; + return self; + } + break; + } + case 8: { + OWSSignalServiceProtosSyncMessageRequestType value = (OWSSignalServiceProtosSyncMessageRequestType)[input readEnum]; + if (OWSSignalServiceProtosSyncMessageRequestTypeIsValidValue(value)) { + [self setType:value]; + } else { + [unknownFields mergeVarintField:1 value:value]; + } + break; + } + } + } +} +- (BOOL) hasType { + return resultRequest.hasType; +} +- (OWSSignalServiceProtosSyncMessageRequestType) type { + return resultRequest.type; +} +- (OWSSignalServiceProtosSyncMessageRequestBuilder*) setType:(OWSSignalServiceProtosSyncMessageRequestType) value { + resultRequest.hasType = YES; + resultRequest.type = value; + return self; +} +- (OWSSignalServiceProtosSyncMessageRequestBuilder*) clearType { + resultRequest.hasType = NO; + resultRequest.type = OWSSignalServiceProtosSyncMessageRequestTypeUnknown; + return self; +} +@end + +@interface OWSSignalServiceProtosSyncMessageRead () +@property (strong) NSString* sender; +@property UInt64 timestamp; +@end + +@implementation OWSSignalServiceProtosSyncMessageRead + +- (BOOL) hasSender { + return !!hasSender_; +} +- (void) setHasSender:(BOOL) _value_ { + hasSender_ = !!_value_; +} +@synthesize sender; +- (BOOL) hasTimestamp { + return !!hasTimestamp_; +} +- (void) setHasTimestamp:(BOOL) _value_ { + hasTimestamp_ = !!_value_; +} +@synthesize timestamp; +- (instancetype) init { + if ((self = [super init])) { + self.sender = @""; + self.timestamp = 0L; + } + return self; +} +static OWSSignalServiceProtosSyncMessageRead* defaultOWSSignalServiceProtosSyncMessageReadInstance = nil; ++ (void) initialize { + if (self == [OWSSignalServiceProtosSyncMessageRead class]) { + defaultOWSSignalServiceProtosSyncMessageReadInstance = [[OWSSignalServiceProtosSyncMessageRead alloc] init]; + } +} ++ (instancetype) defaultInstance { + return defaultOWSSignalServiceProtosSyncMessageReadInstance; +} +- (instancetype) defaultInstance { + return defaultOWSSignalServiceProtosSyncMessageReadInstance; +} +- (BOOL) isInitialized { + return YES; +} +- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { + if (self.hasSender) { + [output writeString:1 value:self.sender]; + } + if (self.hasTimestamp) { + [output writeUInt64:2 value:self.timestamp]; + } + [self.unknownFields writeToCodedOutputStream:output]; +} +- (SInt32) serializedSize { + __block SInt32 size_ = memoizedSerializedSize; + if (size_ != -1) { + return size_; + } + + size_ = 0; + if (self.hasSender) { + size_ += computeStringSize(1, self.sender); + } + if (self.hasTimestamp) { + size_ += computeUInt64Size(2, self.timestamp); + } + size_ += self.unknownFields.serializedSize; + memoizedSerializedSize = size_; + return size_; +} ++ (OWSSignalServiceProtosSyncMessageRead*) parseFromData:(NSData*) data { + return (OWSSignalServiceProtosSyncMessageRead*)[[[OWSSignalServiceProtosSyncMessageRead builder] mergeFromData:data] build]; +} ++ (OWSSignalServiceProtosSyncMessageRead*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosSyncMessageRead*)[[[OWSSignalServiceProtosSyncMessageRead builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosSyncMessageRead*) parseFromInputStream:(NSInputStream*) input { + return (OWSSignalServiceProtosSyncMessageRead*)[[[OWSSignalServiceProtosSyncMessageRead builder] mergeFromInputStream:input] build]; +} ++ (OWSSignalServiceProtosSyncMessageRead*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosSyncMessageRead*)[[[OWSSignalServiceProtosSyncMessageRead builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosSyncMessageRead*) parseFromCodedInputStream:(PBCodedInputStream*) input { + return (OWSSignalServiceProtosSyncMessageRead*)[[[OWSSignalServiceProtosSyncMessageRead builder] mergeFromCodedInputStream:input] build]; +} ++ (OWSSignalServiceProtosSyncMessageRead*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosSyncMessageRead*)[[[OWSSignalServiceProtosSyncMessageRead builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosSyncMessageReadBuilder*) builder { + return [[OWSSignalServiceProtosSyncMessageReadBuilder alloc] init]; +} ++ (OWSSignalServiceProtosSyncMessageReadBuilder*) builderWithPrototype:(OWSSignalServiceProtosSyncMessageRead*) prototype { + return [[OWSSignalServiceProtosSyncMessageRead builder] mergeFrom:prototype]; +} +- (OWSSignalServiceProtosSyncMessageReadBuilder*) builder { + return [OWSSignalServiceProtosSyncMessageRead builder]; +} +- (OWSSignalServiceProtosSyncMessageReadBuilder*) toBuilder { + return [OWSSignalServiceProtosSyncMessageRead builderWithPrototype:self]; +} +- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { + if (self.hasSender) { + [output appendFormat:@"%@%@: %@\n", indent, @"sender", self.sender]; + } + if (self.hasTimestamp) { + [output appendFormat:@"%@%@: %@\n", indent, @"timestamp", [NSNumber numberWithLongLong:self.timestamp]]; + } + [self.unknownFields writeDescriptionTo:output withIndent:indent]; +} +- (void) storeInDictionary:(NSMutableDictionary *)dictionary { + if (self.hasSender) { + [dictionary setObject: self.sender forKey: @"sender"]; + } + if (self.hasTimestamp) { + [dictionary setObject: [NSNumber numberWithLongLong:self.timestamp] forKey: @"timestamp"]; + } + [self.unknownFields storeInDictionary:dictionary]; +} +- (BOOL) isEqual:(id)other { + if (other == self) { + return YES; + } + if (![other isKindOfClass:[OWSSignalServiceProtosSyncMessageRead class]]) { + return NO; + } + OWSSignalServiceProtosSyncMessageRead *otherMessage = other; + return + self.hasSender == otherMessage.hasSender && + (!self.hasSender || [self.sender isEqual:otherMessage.sender]) && + self.hasTimestamp == otherMessage.hasTimestamp && + (!self.hasTimestamp || self.timestamp == otherMessage.timestamp) && + (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); +} +- (NSUInteger) hash { + __block NSUInteger hashCode = 7; + if (self.hasSender) { + hashCode = hashCode * 31 + [self.sender hash]; + } + if (self.hasTimestamp) { + hashCode = hashCode * 31 + [[NSNumber numberWithLongLong:self.timestamp] hash]; + } + hashCode = hashCode * 31 + [self.unknownFields hash]; + return hashCode; +} +@end + +@interface OWSSignalServiceProtosSyncMessageReadBuilder() +@property (strong) OWSSignalServiceProtosSyncMessageRead* resultRead; +@end + +@implementation OWSSignalServiceProtosSyncMessageReadBuilder +@synthesize resultRead; +- (instancetype) init { + if ((self = [super init])) { + self.resultRead = [[OWSSignalServiceProtosSyncMessageRead alloc] init]; + } + return self; +} +- (PBGeneratedMessage*) internalGetResult { + return resultRead; +} +- (OWSSignalServiceProtosSyncMessageReadBuilder*) clear { + self.resultRead = [[OWSSignalServiceProtosSyncMessageRead alloc] init]; + return self; +} +- (OWSSignalServiceProtosSyncMessageReadBuilder*) clone { + return [OWSSignalServiceProtosSyncMessageRead builderWithPrototype:resultRead]; +} +- (OWSSignalServiceProtosSyncMessageRead*) defaultInstance { + return [OWSSignalServiceProtosSyncMessageRead defaultInstance]; +} +- (OWSSignalServiceProtosSyncMessageRead*) build { + [self checkInitialized]; + return [self buildPartial]; +} +- (OWSSignalServiceProtosSyncMessageRead*) buildPartial { + OWSSignalServiceProtosSyncMessageRead* returnMe = resultRead; + self.resultRead = nil; + return returnMe; +} +- (OWSSignalServiceProtosSyncMessageReadBuilder*) mergeFrom:(OWSSignalServiceProtosSyncMessageRead*) other { + if (other == [OWSSignalServiceProtosSyncMessageRead defaultInstance]) { + return self; + } + if (other.hasSender) { + [self setSender:other.sender]; + } + if (other.hasTimestamp) { + [self setTimestamp:other.timestamp]; + } + [self mergeUnknownFields:other.unknownFields]; + return self; +} +- (OWSSignalServiceProtosSyncMessageReadBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { + return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; +} +- (OWSSignalServiceProtosSyncMessageReadBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; + while (YES) { + SInt32 tag = [input readTag]; + switch (tag) { + case 0: + [self setUnknownFields:[unknownFields build]]; + return self; + default: { + if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) { + [self setUnknownFields:[unknownFields build]]; + return self; + } + break; + } + case 10: { + [self setSender:[input readString]]; + break; + } + case 16: { + [self setTimestamp:[input readUInt64]]; + break; + } + } + } +} +- (BOOL) hasSender { + return resultRead.hasSender; +} +- (NSString*) sender { + return resultRead.sender; +} +- (OWSSignalServiceProtosSyncMessageReadBuilder*) setSender:(NSString*) value { + resultRead.hasSender = YES; + resultRead.sender = value; + return self; +} +- (OWSSignalServiceProtosSyncMessageReadBuilder*) clearSender { + resultRead.hasSender = NO; + resultRead.sender = @""; + return self; +} +- (BOOL) hasTimestamp { + return resultRead.hasTimestamp; +} +- (UInt64) timestamp { + return resultRead.timestamp; +} +- (OWSSignalServiceProtosSyncMessageReadBuilder*) setTimestamp:(UInt64) value { + resultRead.hasTimestamp = YES; + resultRead.timestamp = value; + return self; +} +- (OWSSignalServiceProtosSyncMessageReadBuilder*) clearTimestamp { + resultRead.hasTimestamp = NO; + resultRead.timestamp = 0L; + return self; +} +@end + +@interface OWSSignalServiceProtosSyncMessageBuilder() +@property (strong) OWSSignalServiceProtosSyncMessage* resultSyncMessage; +@end + +@implementation OWSSignalServiceProtosSyncMessageBuilder +@synthesize resultSyncMessage; +- (instancetype) init { + if ((self = [super init])) { + self.resultSyncMessage = [[OWSSignalServiceProtosSyncMessage alloc] init]; + } + return self; +} +- (PBGeneratedMessage*) internalGetResult { + return resultSyncMessage; +} +- (OWSSignalServiceProtosSyncMessageBuilder*) clear { + self.resultSyncMessage = [[OWSSignalServiceProtosSyncMessage alloc] init]; + return self; +} +- (OWSSignalServiceProtosSyncMessageBuilder*) clone { + return [OWSSignalServiceProtosSyncMessage builderWithPrototype:resultSyncMessage]; +} +- (OWSSignalServiceProtosSyncMessage*) defaultInstance { + return [OWSSignalServiceProtosSyncMessage defaultInstance]; +} +- (OWSSignalServiceProtosSyncMessage*) build { + [self checkInitialized]; + return [self buildPartial]; +} +- (OWSSignalServiceProtosSyncMessage*) buildPartial { + OWSSignalServiceProtosSyncMessage* returnMe = resultSyncMessage; + self.resultSyncMessage = nil; + return returnMe; +} +- (OWSSignalServiceProtosSyncMessageBuilder*) mergeFrom:(OWSSignalServiceProtosSyncMessage*) other { + if (other == [OWSSignalServiceProtosSyncMessage defaultInstance]) { + return self; + } + if (other.hasSent) { + [self mergeSent:other.sent]; + } + if (other.hasContacts) { + [self mergeContacts:other.contacts]; + } + if (other.hasGroups) { + [self mergeGroups:other.groups]; + } + if (other.hasRequest) { + [self mergeRequest:other.request]; + } + if (other.readArray.count > 0) { + if (resultSyncMessage.readArray == nil) { + resultSyncMessage.readArray = [[NSMutableArray alloc] initWithArray:other.readArray]; + } else { + [resultSyncMessage.readArray addObjectsFromArray:other.readArray]; + } + } + [self mergeUnknownFields:other.unknownFields]; + return self; +} +- (OWSSignalServiceProtosSyncMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { + return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; +} +- (OWSSignalServiceProtosSyncMessageBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; + while (YES) { + SInt32 tag = [input readTag]; + switch (tag) { + case 0: + [self setUnknownFields:[unknownFields build]]; + return self; + default: { + if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) { + [self setUnknownFields:[unknownFields build]]; + return self; + } + break; + } + case 10: { + OWSSignalServiceProtosSyncMessageSentBuilder* subBuilder = [OWSSignalServiceProtosSyncMessageSent builder]; + if (self.hasSent) { + [subBuilder mergeFrom:self.sent]; + } + [input readMessage:subBuilder extensionRegistry:extensionRegistry]; + [self setSent:[subBuilder buildPartial]]; + break; + } + case 18: { + OWSSignalServiceProtosSyncMessageContactsBuilder* subBuilder = [OWSSignalServiceProtosSyncMessageContacts builder]; + if (self.hasContacts) { + [subBuilder mergeFrom:self.contacts]; + } + [input readMessage:subBuilder extensionRegistry:extensionRegistry]; + [self setContacts:[subBuilder buildPartial]]; + break; + } + case 26: { + OWSSignalServiceProtosSyncMessageGroupsBuilder* subBuilder = [OWSSignalServiceProtosSyncMessageGroups builder]; + if (self.hasGroups) { + [subBuilder mergeFrom:self.groups]; + } + [input readMessage:subBuilder extensionRegistry:extensionRegistry]; + [self setGroups:[subBuilder buildPartial]]; + break; + } + case 34: { + OWSSignalServiceProtosSyncMessageRequestBuilder* subBuilder = [OWSSignalServiceProtosSyncMessageRequest builder]; + if (self.hasRequest) { + [subBuilder mergeFrom:self.request]; + } + [input readMessage:subBuilder extensionRegistry:extensionRegistry]; + [self setRequest:[subBuilder buildPartial]]; + break; + } + case 42: { + OWSSignalServiceProtosSyncMessageReadBuilder* subBuilder = [OWSSignalServiceProtosSyncMessageRead builder]; + [input readMessage:subBuilder extensionRegistry:extensionRegistry]; + [self addRead:[subBuilder buildPartial]]; + break; + } + } + } +} +- (BOOL) hasSent { + return resultSyncMessage.hasSent; +} +- (OWSSignalServiceProtosSyncMessageSent*) sent { + return resultSyncMessage.sent; +} +- (OWSSignalServiceProtosSyncMessageBuilder*) setSent:(OWSSignalServiceProtosSyncMessageSent*) value { + resultSyncMessage.hasSent = YES; + resultSyncMessage.sent = value; + return self; +} +- (OWSSignalServiceProtosSyncMessageBuilder*) setSentBuilder:(OWSSignalServiceProtosSyncMessageSentBuilder*) builderForValue { + return [self setSent:[builderForValue build]]; +} +- (OWSSignalServiceProtosSyncMessageBuilder*) mergeSent:(OWSSignalServiceProtosSyncMessageSent*) value { + if (resultSyncMessage.hasSent && + resultSyncMessage.sent != [OWSSignalServiceProtosSyncMessageSent defaultInstance]) { + resultSyncMessage.sent = + [[[OWSSignalServiceProtosSyncMessageSent builderWithPrototype:resultSyncMessage.sent] mergeFrom:value] buildPartial]; + } else { + resultSyncMessage.sent = value; + } + resultSyncMessage.hasSent = YES; + return self; +} +- (OWSSignalServiceProtosSyncMessageBuilder*) clearSent { + resultSyncMessage.hasSent = NO; + resultSyncMessage.sent = [OWSSignalServiceProtosSyncMessageSent defaultInstance]; + return self; +} +- (BOOL) hasContacts { + return resultSyncMessage.hasContacts; +} +- (OWSSignalServiceProtosSyncMessageContacts*) contacts { + return resultSyncMessage.contacts; +} +- (OWSSignalServiceProtosSyncMessageBuilder*) setContacts:(OWSSignalServiceProtosSyncMessageContacts*) value { + resultSyncMessage.hasContacts = YES; + resultSyncMessage.contacts = value; + return self; +} +- (OWSSignalServiceProtosSyncMessageBuilder*) setContactsBuilder:(OWSSignalServiceProtosSyncMessageContactsBuilder*) builderForValue { + return [self setContacts:[builderForValue build]]; +} +- (OWSSignalServiceProtosSyncMessageBuilder*) mergeContacts:(OWSSignalServiceProtosSyncMessageContacts*) value { + if (resultSyncMessage.hasContacts && + resultSyncMessage.contacts != [OWSSignalServiceProtosSyncMessageContacts defaultInstance]) { + resultSyncMessage.contacts = + [[[OWSSignalServiceProtosSyncMessageContacts builderWithPrototype:resultSyncMessage.contacts] mergeFrom:value] buildPartial]; + } else { + resultSyncMessage.contacts = value; + } + resultSyncMessage.hasContacts = YES; + return self; +} +- (OWSSignalServiceProtosSyncMessageBuilder*) clearContacts { + resultSyncMessage.hasContacts = NO; + resultSyncMessage.contacts = [OWSSignalServiceProtosSyncMessageContacts defaultInstance]; + return self; +} +- (BOOL) hasGroups { + return resultSyncMessage.hasGroups; +} +- (OWSSignalServiceProtosSyncMessageGroups*) groups { + return resultSyncMessage.groups; +} +- (OWSSignalServiceProtosSyncMessageBuilder*) setGroups:(OWSSignalServiceProtosSyncMessageGroups*) value { + resultSyncMessage.hasGroups = YES; + resultSyncMessage.groups = value; + return self; +} +- (OWSSignalServiceProtosSyncMessageBuilder*) setGroupsBuilder:(OWSSignalServiceProtosSyncMessageGroupsBuilder*) builderForValue { + return [self setGroups:[builderForValue build]]; +} +- (OWSSignalServiceProtosSyncMessageBuilder*) mergeGroups:(OWSSignalServiceProtosSyncMessageGroups*) value { + if (resultSyncMessage.hasGroups && + resultSyncMessage.groups != [OWSSignalServiceProtosSyncMessageGroups defaultInstance]) { + resultSyncMessage.groups = + [[[OWSSignalServiceProtosSyncMessageGroups builderWithPrototype:resultSyncMessage.groups] mergeFrom:value] buildPartial]; + } else { + resultSyncMessage.groups = value; + } + resultSyncMessage.hasGroups = YES; + return self; +} +- (OWSSignalServiceProtosSyncMessageBuilder*) clearGroups { + resultSyncMessage.hasGroups = NO; + resultSyncMessage.groups = [OWSSignalServiceProtosSyncMessageGroups defaultInstance]; + return self; +} +- (BOOL) hasRequest { + return resultSyncMessage.hasRequest; +} +- (OWSSignalServiceProtosSyncMessageRequest*) request { + return resultSyncMessage.request; +} +- (OWSSignalServiceProtosSyncMessageBuilder*) setRequest:(OWSSignalServiceProtosSyncMessageRequest*) value { + resultSyncMessage.hasRequest = YES; + resultSyncMessage.request = value; + return self; +} +- (OWSSignalServiceProtosSyncMessageBuilder*) setRequestBuilder:(OWSSignalServiceProtosSyncMessageRequestBuilder*) builderForValue { + return [self setRequest:[builderForValue build]]; +} +- (OWSSignalServiceProtosSyncMessageBuilder*) mergeRequest:(OWSSignalServiceProtosSyncMessageRequest*) value { + if (resultSyncMessage.hasRequest && + resultSyncMessage.request != [OWSSignalServiceProtosSyncMessageRequest defaultInstance]) { + resultSyncMessage.request = + [[[OWSSignalServiceProtosSyncMessageRequest builderWithPrototype:resultSyncMessage.request] mergeFrom:value] buildPartial]; + } else { + resultSyncMessage.request = value; + } + resultSyncMessage.hasRequest = YES; + return self; +} +- (OWSSignalServiceProtosSyncMessageBuilder*) clearRequest { + resultSyncMessage.hasRequest = NO; + resultSyncMessage.request = [OWSSignalServiceProtosSyncMessageRequest defaultInstance]; + return self; +} +- (NSMutableArray *)read { + return resultSyncMessage.readArray; +} +- (OWSSignalServiceProtosSyncMessageRead*)readAtIndex:(NSUInteger)index { + return [resultSyncMessage readAtIndex:index]; +} +- (OWSSignalServiceProtosSyncMessageBuilder *)addRead:(OWSSignalServiceProtosSyncMessageRead*)value { + if (resultSyncMessage.readArray == nil) { + resultSyncMessage.readArray = [[NSMutableArray alloc]init]; + } + [resultSyncMessage.readArray addObject:value]; + return self; +} +- (OWSSignalServiceProtosSyncMessageBuilder *)setReadArray:(NSArray *)array { + resultSyncMessage.readArray = [[NSMutableArray alloc]initWithArray:array]; + return self; +} +- (OWSSignalServiceProtosSyncMessageBuilder *)clearRead { + resultSyncMessage.readArray = nil; + return self; +} +@end + +@interface OWSSignalServiceProtosAttachmentPointer () +@property UInt64 id; +@property (strong) NSString* contentType; +@property (strong) NSData* key; +@property UInt32 size; +@property (strong) NSData* thumbnail; +@end + +@implementation OWSSignalServiceProtosAttachmentPointer + +- (BOOL) hasId { + return !!hasId_; +} +- (void) setHasId:(BOOL) _value_ { + hasId_ = !!_value_; +} +@synthesize id; +- (BOOL) hasContentType { + return !!hasContentType_; +} +- (void) setHasContentType:(BOOL) _value_ { + hasContentType_ = !!_value_; +} +@synthesize contentType; +- (BOOL) hasKey { + return !!hasKey_; +} +- (void) setHasKey:(BOOL) _value_ { + hasKey_ = !!_value_; +} +@synthesize key; +- (BOOL) hasSize { + return !!hasSize_; +} +- (void) setHasSize:(BOOL) _value_ { + hasSize_ = !!_value_; +} +@synthesize size; +- (BOOL) hasThumbnail { + return !!hasThumbnail_; +} +- (void) setHasThumbnail:(BOOL) _value_ { + hasThumbnail_ = !!_value_; +} +@synthesize thumbnail; +- (instancetype) init { + if ((self = [super init])) { + self.id = 0L; + self.contentType = @""; + self.key = [NSData data]; + self.size = 0; + self.thumbnail = [NSData data]; + } + return self; +} +static OWSSignalServiceProtosAttachmentPointer* defaultOWSSignalServiceProtosAttachmentPointerInstance = nil; ++ (void) initialize { + if (self == [OWSSignalServiceProtosAttachmentPointer class]) { + defaultOWSSignalServiceProtosAttachmentPointerInstance = [[OWSSignalServiceProtosAttachmentPointer alloc] init]; + } +} ++ (instancetype) defaultInstance { + return defaultOWSSignalServiceProtosAttachmentPointerInstance; +} +- (instancetype) defaultInstance { + return defaultOWSSignalServiceProtosAttachmentPointerInstance; +} +- (BOOL) isInitialized { + return YES; +} +- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { + if (self.hasId) { + [output writeFixed64:1 value:self.id]; + } + if (self.hasContentType) { + [output writeString:2 value:self.contentType]; + } + if (self.hasKey) { + [output writeData:3 value:self.key]; + } + if (self.hasSize) { + [output writeUInt32:4 value:self.size]; + } + if (self.hasThumbnail) { + [output writeData:5 value:self.thumbnail]; + } + [self.unknownFields writeToCodedOutputStream:output]; +} +- (SInt32) serializedSize { + __block SInt32 size_ = memoizedSerializedSize; + if (size_ != -1) { + return size_; + } + + size_ = 0; + if (self.hasId) { + size_ += computeFixed64Size(1, self.id); + } + if (self.hasContentType) { + size_ += computeStringSize(2, self.contentType); + } + if (self.hasKey) { + size_ += computeDataSize(3, self.key); + } + if (self.hasSize) { + size_ += computeUInt32Size(4, self.size); + } + if (self.hasThumbnail) { + size_ += computeDataSize(5, self.thumbnail); + } + size_ += self.unknownFields.serializedSize; + memoizedSerializedSize = size_; + return size_; +} ++ (OWSSignalServiceProtosAttachmentPointer*) parseFromData:(NSData*) data { + return (OWSSignalServiceProtosAttachmentPointer*)[[[OWSSignalServiceProtosAttachmentPointer builder] mergeFromData:data] build]; +} ++ (OWSSignalServiceProtosAttachmentPointer*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosAttachmentPointer*)[[[OWSSignalServiceProtosAttachmentPointer builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosAttachmentPointer*) parseFromInputStream:(NSInputStream*) input { + return (OWSSignalServiceProtosAttachmentPointer*)[[[OWSSignalServiceProtosAttachmentPointer builder] mergeFromInputStream:input] build]; +} ++ (OWSSignalServiceProtosAttachmentPointer*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosAttachmentPointer*)[[[OWSSignalServiceProtosAttachmentPointer builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosAttachmentPointer*) parseFromCodedInputStream:(PBCodedInputStream*) input { + return (OWSSignalServiceProtosAttachmentPointer*)[[[OWSSignalServiceProtosAttachmentPointer builder] mergeFromCodedInputStream:input] build]; +} ++ (OWSSignalServiceProtosAttachmentPointer*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosAttachmentPointer*)[[[OWSSignalServiceProtosAttachmentPointer builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosAttachmentPointerBuilder*) builder { + return [[OWSSignalServiceProtosAttachmentPointerBuilder alloc] init]; +} ++ (OWSSignalServiceProtosAttachmentPointerBuilder*) builderWithPrototype:(OWSSignalServiceProtosAttachmentPointer*) prototype { + return [[OWSSignalServiceProtosAttachmentPointer builder] mergeFrom:prototype]; +} +- (OWSSignalServiceProtosAttachmentPointerBuilder*) builder { + return [OWSSignalServiceProtosAttachmentPointer builder]; +} +- (OWSSignalServiceProtosAttachmentPointerBuilder*) toBuilder { + return [OWSSignalServiceProtosAttachmentPointer builderWithPrototype:self]; +} +- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { + if (self.hasId) { + [output appendFormat:@"%@%@: %@\n", indent, @"id", [NSNumber numberWithLongLong:self.id]]; + } + if (self.hasContentType) { + [output appendFormat:@"%@%@: %@\n", indent, @"contentType", self.contentType]; + } + if (self.hasKey) { + [output appendFormat:@"%@%@: %@\n", indent, @"key", self.key]; + } + if (self.hasSize) { + [output appendFormat:@"%@%@: %@\n", indent, @"size", [NSNumber numberWithInteger:self.size]]; + } + if (self.hasThumbnail) { + [output appendFormat:@"%@%@: %@\n", indent, @"thumbnail", self.thumbnail]; + } + [self.unknownFields writeDescriptionTo:output withIndent:indent]; +} +- (void) storeInDictionary:(NSMutableDictionary *)dictionary { + if (self.hasId) { + [dictionary setObject: [NSNumber numberWithLongLong:self.id] forKey: @"id"]; + } + if (self.hasContentType) { + [dictionary setObject: self.contentType forKey: @"contentType"]; + } + if (self.hasKey) { + [dictionary setObject: self.key forKey: @"key"]; + } + if (self.hasSize) { + [dictionary setObject: [NSNumber numberWithInteger:self.size] forKey: @"size"]; + } + if (self.hasThumbnail) { + [dictionary setObject: self.thumbnail forKey: @"thumbnail"]; + } + [self.unknownFields storeInDictionary:dictionary]; +} +- (BOOL) isEqual:(id)other { + if (other == self) { + return YES; + } + if (![other isKindOfClass:[OWSSignalServiceProtosAttachmentPointer class]]) { + return NO; + } + OWSSignalServiceProtosAttachmentPointer *otherMessage = other; + return + self.hasId == otherMessage.hasId && + (!self.hasId || self.id == otherMessage.id) && + self.hasContentType == otherMessage.hasContentType && + (!self.hasContentType || [self.contentType isEqual:otherMessage.contentType]) && + self.hasKey == otherMessage.hasKey && + (!self.hasKey || [self.key isEqual:otherMessage.key]) && + self.hasSize == otherMessage.hasSize && + (!self.hasSize || self.size == otherMessage.size) && + self.hasThumbnail == otherMessage.hasThumbnail && + (!self.hasThumbnail || [self.thumbnail isEqual:otherMessage.thumbnail]) && + (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); +} +- (NSUInteger) hash { + __block NSUInteger hashCode = 7; + if (self.hasId) { + hashCode = hashCode * 31 + [[NSNumber numberWithLongLong:self.id] hash]; + } + if (self.hasContentType) { + hashCode = hashCode * 31 + [self.contentType hash]; + } + if (self.hasKey) { + hashCode = hashCode * 31 + [self.key hash]; + } + if (self.hasSize) { + hashCode = hashCode * 31 + [[NSNumber numberWithInteger:self.size] hash]; + } + if (self.hasThumbnail) { + hashCode = hashCode * 31 + [self.thumbnail hash]; + } + hashCode = hashCode * 31 + [self.unknownFields hash]; + return hashCode; +} +@end + +@interface OWSSignalServiceProtosAttachmentPointerBuilder() +@property (strong) OWSSignalServiceProtosAttachmentPointer* resultAttachmentPointer; +@end + +@implementation OWSSignalServiceProtosAttachmentPointerBuilder +@synthesize resultAttachmentPointer; +- (instancetype) init { + if ((self = [super init])) { + self.resultAttachmentPointer = [[OWSSignalServiceProtosAttachmentPointer alloc] init]; + } + return self; +} +- (PBGeneratedMessage*) internalGetResult { + return resultAttachmentPointer; +} +- (OWSSignalServiceProtosAttachmentPointerBuilder*) clear { + self.resultAttachmentPointer = [[OWSSignalServiceProtosAttachmentPointer alloc] init]; + return self; +} +- (OWSSignalServiceProtosAttachmentPointerBuilder*) clone { + return [OWSSignalServiceProtosAttachmentPointer builderWithPrototype:resultAttachmentPointer]; +} +- (OWSSignalServiceProtosAttachmentPointer*) defaultInstance { + return [OWSSignalServiceProtosAttachmentPointer defaultInstance]; +} +- (OWSSignalServiceProtosAttachmentPointer*) build { + [self checkInitialized]; + return [self buildPartial]; +} +- (OWSSignalServiceProtosAttachmentPointer*) buildPartial { + OWSSignalServiceProtosAttachmentPointer* returnMe = resultAttachmentPointer; + self.resultAttachmentPointer = nil; + return returnMe; +} +- (OWSSignalServiceProtosAttachmentPointerBuilder*) mergeFrom:(OWSSignalServiceProtosAttachmentPointer*) other { + if (other == [OWSSignalServiceProtosAttachmentPointer defaultInstance]) { + return self; + } + if (other.hasId) { + [self setId:other.id]; + } + if (other.hasContentType) { + [self setContentType:other.contentType]; + } + if (other.hasKey) { + [self setKey:other.key]; + } + if (other.hasSize) { + [self setSize:other.size]; + } + if (other.hasThumbnail) { + [self setThumbnail:other.thumbnail]; + } + [self mergeUnknownFields:other.unknownFields]; + return self; +} +- (OWSSignalServiceProtosAttachmentPointerBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { + return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; +} +- (OWSSignalServiceProtosAttachmentPointerBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; + while (YES) { + SInt32 tag = [input readTag]; + switch (tag) { + case 0: + [self setUnknownFields:[unknownFields build]]; + return self; + default: { + if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) { + [self setUnknownFields:[unknownFields build]]; + return self; + } + break; + } + case 9: { + [self setId:[input readFixed64]]; + break; + } + case 18: { + [self setContentType:[input readString]]; + break; + } + case 26: { + [self setKey:[input readData]]; + break; + } + case 32: { + [self setSize:[input readUInt32]]; + break; + } + case 42: { + [self setThumbnail:[input readData]]; + break; + } + } + } +} +- (BOOL) hasId { + return resultAttachmentPointer.hasId; +} +- (UInt64) id { + return resultAttachmentPointer.id; +} +- (OWSSignalServiceProtosAttachmentPointerBuilder*) setId:(UInt64) value { + resultAttachmentPointer.hasId = YES; + resultAttachmentPointer.id = value; + return self; +} +- (OWSSignalServiceProtosAttachmentPointerBuilder*) clearId { + resultAttachmentPointer.hasId = NO; + resultAttachmentPointer.id = 0L; + return self; +} +- (BOOL) hasContentType { + return resultAttachmentPointer.hasContentType; +} +- (NSString*) contentType { + return resultAttachmentPointer.contentType; +} +- (OWSSignalServiceProtosAttachmentPointerBuilder*) setContentType:(NSString*) value { + resultAttachmentPointer.hasContentType = YES; + resultAttachmentPointer.contentType = value; + return self; +} +- (OWSSignalServiceProtosAttachmentPointerBuilder*) clearContentType { + resultAttachmentPointer.hasContentType = NO; + resultAttachmentPointer.contentType = @""; + return self; +} +- (BOOL) hasKey { + return resultAttachmentPointer.hasKey; +} +- (NSData*) key { + return resultAttachmentPointer.key; +} +- (OWSSignalServiceProtosAttachmentPointerBuilder*) setKey:(NSData*) value { + resultAttachmentPointer.hasKey = YES; + resultAttachmentPointer.key = value; + return self; +} +- (OWSSignalServiceProtosAttachmentPointerBuilder*) clearKey { + resultAttachmentPointer.hasKey = NO; + resultAttachmentPointer.key = [NSData data]; + return self; +} +- (BOOL) hasSize { + return resultAttachmentPointer.hasSize; +} +- (UInt32) size { + return resultAttachmentPointer.size; +} +- (OWSSignalServiceProtosAttachmentPointerBuilder*) setSize:(UInt32) value { + resultAttachmentPointer.hasSize = YES; + resultAttachmentPointer.size = value; + return self; +} +- (OWSSignalServiceProtosAttachmentPointerBuilder*) clearSize { + resultAttachmentPointer.hasSize = NO; + resultAttachmentPointer.size = 0; + return self; +} +- (BOOL) hasThumbnail { + return resultAttachmentPointer.hasThumbnail; +} +- (NSData*) thumbnail { + return resultAttachmentPointer.thumbnail; +} +- (OWSSignalServiceProtosAttachmentPointerBuilder*) setThumbnail:(NSData*) value { + resultAttachmentPointer.hasThumbnail = YES; + resultAttachmentPointer.thumbnail = value; + return self; +} +- (OWSSignalServiceProtosAttachmentPointerBuilder*) clearThumbnail { + resultAttachmentPointer.hasThumbnail = NO; + resultAttachmentPointer.thumbnail = [NSData data]; + return self; +} +@end + +@interface OWSSignalServiceProtosGroupContext () +@property (strong) NSData* id; +@property OWSSignalServiceProtosGroupContextType type; +@property (strong) NSString* name; +@property (strong) NSMutableArray * membersArray; +@property (strong) OWSSignalServiceProtosAttachmentPointer* avatar; +@end + +@implementation OWSSignalServiceProtosGroupContext + +- (BOOL) hasId { + return !!hasId_; +} +- (void) setHasId:(BOOL) _value_ { + hasId_ = !!_value_; +} +@synthesize id; +- (BOOL) hasType { + return !!hasType_; +} +- (void) setHasType:(BOOL) _value_ { + hasType_ = !!_value_; +} +@synthesize type; +- (BOOL) hasName { + return !!hasName_; +} +- (void) setHasName:(BOOL) _value_ { + hasName_ = !!_value_; +} +@synthesize name; +@synthesize membersArray; +@dynamic members; +- (BOOL) hasAvatar { + return !!hasAvatar_; +} +- (void) setHasAvatar:(BOOL) _value_ { + hasAvatar_ = !!_value_; +} +@synthesize avatar; +- (instancetype) init { + if ((self = [super init])) { + self.id = [NSData data]; + self.type = OWSSignalServiceProtosGroupContextTypeUnknown; + self.name = @""; + self.avatar = [OWSSignalServiceProtosAttachmentPointer defaultInstance]; + } + return self; +} +static OWSSignalServiceProtosGroupContext* defaultOWSSignalServiceProtosGroupContextInstance = nil; ++ (void) initialize { + if (self == [OWSSignalServiceProtosGroupContext class]) { + defaultOWSSignalServiceProtosGroupContextInstance = [[OWSSignalServiceProtosGroupContext alloc] init]; + } +} ++ (instancetype) defaultInstance { + return defaultOWSSignalServiceProtosGroupContextInstance; +} +- (instancetype) defaultInstance { + return defaultOWSSignalServiceProtosGroupContextInstance; +} +- (NSArray *)members { + return membersArray; +} +- (NSString*)membersAtIndex:(NSUInteger)index { + return [membersArray objectAtIndex:index]; +} +- (BOOL) isInitialized { + return YES; +} +- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { + if (self.hasId) { + [output writeData:1 value:self.id]; + } + if (self.hasType) { + [output writeEnum:2 value:self.type]; + } + if (self.hasName) { + [output writeString:3 value:self.name]; + } + [self.membersArray enumerateObjectsUsingBlock:^(NSString *element, NSUInteger idx, BOOL *stop) { + [output writeString:4 value:element]; + }]; + if (self.hasAvatar) { + [output writeMessage:5 value:self.avatar]; + } + [self.unknownFields writeToCodedOutputStream:output]; +} +- (SInt32) serializedSize { + __block SInt32 size_ = memoizedSerializedSize; + if (size_ != -1) { + return size_; + } + + size_ = 0; + if (self.hasId) { + size_ += computeDataSize(1, self.id); + } + if (self.hasType) { + size_ += computeEnumSize(2, self.type); + } + if (self.hasName) { + size_ += computeStringSize(3, self.name); + } + { + __block SInt32 dataSize = 0; + const NSUInteger count = self.membersArray.count; + [self.membersArray enumerateObjectsUsingBlock:^(NSString *element, NSUInteger idx, BOOL *stop) { + dataSize += computeStringSizeNoTag(element); + }]; + size_ += dataSize; + size_ += (SInt32)(1 * count); + } + if (self.hasAvatar) { + size_ += computeMessageSize(5, self.avatar); + } + size_ += self.unknownFields.serializedSize; + memoizedSerializedSize = size_; + return size_; +} ++ (OWSSignalServiceProtosGroupContext*) parseFromData:(NSData*) data { + return (OWSSignalServiceProtosGroupContext*)[[[OWSSignalServiceProtosGroupContext builder] mergeFromData:data] build]; +} ++ (OWSSignalServiceProtosGroupContext*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosGroupContext*)[[[OWSSignalServiceProtosGroupContext builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosGroupContext*) parseFromInputStream:(NSInputStream*) input { + return (OWSSignalServiceProtosGroupContext*)[[[OWSSignalServiceProtosGroupContext builder] mergeFromInputStream:input] build]; +} ++ (OWSSignalServiceProtosGroupContext*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosGroupContext*)[[[OWSSignalServiceProtosGroupContext builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosGroupContext*) parseFromCodedInputStream:(PBCodedInputStream*) input { + return (OWSSignalServiceProtosGroupContext*)[[[OWSSignalServiceProtosGroupContext builder] mergeFromCodedInputStream:input] build]; +} ++ (OWSSignalServiceProtosGroupContext*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosGroupContext*)[[[OWSSignalServiceProtosGroupContext builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosGroupContextBuilder*) builder { + return [[OWSSignalServiceProtosGroupContextBuilder alloc] init]; +} ++ (OWSSignalServiceProtosGroupContextBuilder*) builderWithPrototype:(OWSSignalServiceProtosGroupContext*) prototype { + return [[OWSSignalServiceProtosGroupContext builder] mergeFrom:prototype]; +} +- (OWSSignalServiceProtosGroupContextBuilder*) builder { + return [OWSSignalServiceProtosGroupContext builder]; +} +- (OWSSignalServiceProtosGroupContextBuilder*) toBuilder { + return [OWSSignalServiceProtosGroupContext builderWithPrototype:self]; +} +- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { + if (self.hasId) { + [output appendFormat:@"%@%@: %@\n", indent, @"id", self.id]; + } + if (self.hasType) { + [output appendFormat:@"%@%@: %@\n", indent, @"type", NSStringFromOWSSignalServiceProtosGroupContextType(self.type)]; + } + if (self.hasName) { + [output appendFormat:@"%@%@: %@\n", indent, @"name", self.name]; + } + [self.membersArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { + [output appendFormat:@"%@%@: %@\n", indent, @"members", obj]; + }]; + if (self.hasAvatar) { + [output appendFormat:@"%@%@ {\n", indent, @"avatar"]; + [self.avatar writeDescriptionTo:output + withIndent:[NSString stringWithFormat:@"%@ ", indent]]; + [output appendFormat:@"%@}\n", indent]; + } + [self.unknownFields writeDescriptionTo:output withIndent:indent]; +} +- (void) storeInDictionary:(NSMutableDictionary *)dictionary { + if (self.hasId) { + [dictionary setObject: self.id forKey: @"id"]; + } + if (self.hasType) { + [dictionary setObject: @(self.type) forKey: @"type"]; + } + if (self.hasName) { + [dictionary setObject: self.name forKey: @"name"]; + } + [dictionary setObject:self.members forKey: @"members"]; + if (self.hasAvatar) { + NSMutableDictionary *messageDictionary = [NSMutableDictionary dictionary]; + [self.avatar storeInDictionary:messageDictionary]; + [dictionary setObject:[NSDictionary dictionaryWithDictionary:messageDictionary] forKey:@"avatar"]; + } + [self.unknownFields storeInDictionary:dictionary]; +} +- (BOOL) isEqual:(id)other { + if (other == self) { + return YES; + } + if (![other isKindOfClass:[OWSSignalServiceProtosGroupContext class]]) { + return NO; + } + OWSSignalServiceProtosGroupContext *otherMessage = other; + return + self.hasId == otherMessage.hasId && + (!self.hasId || [self.id isEqual:otherMessage.id]) && + self.hasType == otherMessage.hasType && + (!self.hasType || self.type == otherMessage.type) && + self.hasName == otherMessage.hasName && + (!self.hasName || [self.name isEqual:otherMessage.name]) && + [self.membersArray isEqualToArray:otherMessage.membersArray] && + self.hasAvatar == otherMessage.hasAvatar && + (!self.hasAvatar || [self.avatar isEqual:otherMessage.avatar]) && + (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); +} +- (NSUInteger) hash { + __block NSUInteger hashCode = 7; + if (self.hasId) { + hashCode = hashCode * 31 + [self.id hash]; + } + if (self.hasType) { + hashCode = hashCode * 31 + self.type; + } + if (self.hasName) { + hashCode = hashCode * 31 + [self.name hash]; + } + [self.membersArray enumerateObjectsUsingBlock:^(NSString *element, NSUInteger idx, BOOL *stop) { + hashCode = hashCode * 31 + [element hash]; + }]; + if (self.hasAvatar) { + hashCode = hashCode * 31 + [self.avatar hash]; + } + hashCode = hashCode * 31 + [self.unknownFields hash]; + return hashCode; +} +@end + +BOOL OWSSignalServiceProtosGroupContextTypeIsValidValue(OWSSignalServiceProtosGroupContextType value) { + switch (value) { + case OWSSignalServiceProtosGroupContextTypeUnknown: + case OWSSignalServiceProtosGroupContextTypeUpdate: + case OWSSignalServiceProtosGroupContextTypeDeliver: + case OWSSignalServiceProtosGroupContextTypeQuit: + return YES; + default: + return NO; + } +} +NSString *NSStringFromOWSSignalServiceProtosGroupContextType(OWSSignalServiceProtosGroupContextType value) { + switch (value) { + case OWSSignalServiceProtosGroupContextTypeUnknown: + return @"OWSSignalServiceProtosGroupContextTypeUnknown"; + case OWSSignalServiceProtosGroupContextTypeUpdate: + return @"OWSSignalServiceProtosGroupContextTypeUpdate"; + case OWSSignalServiceProtosGroupContextTypeDeliver: + return @"OWSSignalServiceProtosGroupContextTypeDeliver"; + case OWSSignalServiceProtosGroupContextTypeQuit: + return @"OWSSignalServiceProtosGroupContextTypeQuit"; + default: + return nil; + } +} + +@interface OWSSignalServiceProtosGroupContextBuilder() +@property (strong) OWSSignalServiceProtosGroupContext* resultGroupContext; +@end + +@implementation OWSSignalServiceProtosGroupContextBuilder +@synthesize resultGroupContext; +- (instancetype) init { + if ((self = [super init])) { + self.resultGroupContext = [[OWSSignalServiceProtosGroupContext alloc] init]; + } + return self; +} +- (PBGeneratedMessage*) internalGetResult { + return resultGroupContext; +} +- (OWSSignalServiceProtosGroupContextBuilder*) clear { + self.resultGroupContext = [[OWSSignalServiceProtosGroupContext alloc] init]; + return self; +} +- (OWSSignalServiceProtosGroupContextBuilder*) clone { + return [OWSSignalServiceProtosGroupContext builderWithPrototype:resultGroupContext]; +} +- (OWSSignalServiceProtosGroupContext*) defaultInstance { + return [OWSSignalServiceProtosGroupContext defaultInstance]; +} +- (OWSSignalServiceProtosGroupContext*) build { + [self checkInitialized]; + return [self buildPartial]; +} +- (OWSSignalServiceProtosGroupContext*) buildPartial { + OWSSignalServiceProtosGroupContext* returnMe = resultGroupContext; + self.resultGroupContext = nil; + return returnMe; +} +- (OWSSignalServiceProtosGroupContextBuilder*) mergeFrom:(OWSSignalServiceProtosGroupContext*) other { + if (other == [OWSSignalServiceProtosGroupContext defaultInstance]) { + return self; + } + if (other.hasId) { + [self setId:other.id]; + } + if (other.hasType) { + [self setType:other.type]; + } + if (other.hasName) { + [self setName:other.name]; + } + if (other.membersArray.count > 0) { + if (resultGroupContext.membersArray == nil) { + resultGroupContext.membersArray = [[NSMutableArray alloc] initWithArray:other.membersArray]; + } else { + [resultGroupContext.membersArray addObjectsFromArray:other.membersArray]; + } + } + if (other.hasAvatar) { + [self mergeAvatar:other.avatar]; + } + [self mergeUnknownFields:other.unknownFields]; + return self; +} +- (OWSSignalServiceProtosGroupContextBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { + return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; +} +- (OWSSignalServiceProtosGroupContextBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; + while (YES) { + SInt32 tag = [input readTag]; + switch (tag) { + case 0: + [self setUnknownFields:[unknownFields build]]; + return self; + default: { + if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) { + [self setUnknownFields:[unknownFields build]]; + return self; + } + break; + } + case 10: { + [self setId:[input readData]]; + break; + } + case 16: { + OWSSignalServiceProtosGroupContextType value = (OWSSignalServiceProtosGroupContextType)[input readEnum]; + if (OWSSignalServiceProtosGroupContextTypeIsValidValue(value)) { + [self setType:value]; + } else { + [unknownFields mergeVarintField:2 value:value]; + } + break; + } + case 26: { + [self setName:[input readString]]; + break; + } + case 34: { + [self addMembers:[input readString]]; + break; + } + case 42: { + OWSSignalServiceProtosAttachmentPointerBuilder* subBuilder = [OWSSignalServiceProtosAttachmentPointer builder]; + if (self.hasAvatar) { + [subBuilder mergeFrom:self.avatar]; + } + [input readMessage:subBuilder extensionRegistry:extensionRegistry]; + [self setAvatar:[subBuilder buildPartial]]; + break; + } + } + } +} +- (BOOL) hasId { + return resultGroupContext.hasId; +} +- (NSData*) id { + return resultGroupContext.id; +} +- (OWSSignalServiceProtosGroupContextBuilder*) setId:(NSData*) value { + resultGroupContext.hasId = YES; + resultGroupContext.id = value; + return self; +} +- (OWSSignalServiceProtosGroupContextBuilder*) clearId { + resultGroupContext.hasId = NO; + resultGroupContext.id = [NSData data]; + return self; +} +- (BOOL) hasType { + return resultGroupContext.hasType; +} +- (OWSSignalServiceProtosGroupContextType) type { + return resultGroupContext.type; +} +- (OWSSignalServiceProtosGroupContextBuilder*) setType:(OWSSignalServiceProtosGroupContextType) value { + resultGroupContext.hasType = YES; + resultGroupContext.type = value; + return self; +} +- (OWSSignalServiceProtosGroupContextBuilder*) clearType { + resultGroupContext.hasType = NO; + resultGroupContext.type = OWSSignalServiceProtosGroupContextTypeUnknown; + return self; +} +- (BOOL) hasName { + return resultGroupContext.hasName; +} +- (NSString*) name { + return resultGroupContext.name; +} +- (OWSSignalServiceProtosGroupContextBuilder*) setName:(NSString*) value { + resultGroupContext.hasName = YES; + resultGroupContext.name = value; + return self; +} +- (OWSSignalServiceProtosGroupContextBuilder*) clearName { + resultGroupContext.hasName = NO; + resultGroupContext.name = @""; + return self; +} +- (NSMutableArray *)members { + return resultGroupContext.membersArray; +} +- (NSString*)membersAtIndex:(NSUInteger)index { + return [resultGroupContext membersAtIndex:index]; +} +- (OWSSignalServiceProtosGroupContextBuilder *)addMembers:(NSString*)value { + if (resultGroupContext.membersArray == nil) { + resultGroupContext.membersArray = [[NSMutableArray alloc]init]; + } + [resultGroupContext.membersArray addObject:value]; + return self; +} +- (OWSSignalServiceProtosGroupContextBuilder *)setMembersArray:(NSArray *)array { + resultGroupContext.membersArray = [[NSMutableArray alloc] initWithArray:array]; + return self; +} +- (OWSSignalServiceProtosGroupContextBuilder *)clearMembers { + resultGroupContext.membersArray = nil; + return self; +} +- (BOOL) hasAvatar { + return resultGroupContext.hasAvatar; +} +- (OWSSignalServiceProtosAttachmentPointer*) avatar { + return resultGroupContext.avatar; +} +- (OWSSignalServiceProtosGroupContextBuilder*) setAvatar:(OWSSignalServiceProtosAttachmentPointer*) value { + resultGroupContext.hasAvatar = YES; + resultGroupContext.avatar = value; + return self; +} +- (OWSSignalServiceProtosGroupContextBuilder*) setAvatarBuilder:(OWSSignalServiceProtosAttachmentPointerBuilder*) builderForValue { + return [self setAvatar:[builderForValue build]]; +} +- (OWSSignalServiceProtosGroupContextBuilder*) mergeAvatar:(OWSSignalServiceProtosAttachmentPointer*) value { + if (resultGroupContext.hasAvatar && + resultGroupContext.avatar != [OWSSignalServiceProtosAttachmentPointer defaultInstance]) { + resultGroupContext.avatar = + [[[OWSSignalServiceProtosAttachmentPointer builderWithPrototype:resultGroupContext.avatar] mergeFrom:value] buildPartial]; + } else { + resultGroupContext.avatar = value; + } + resultGroupContext.hasAvatar = YES; + return self; +} +- (OWSSignalServiceProtosGroupContextBuilder*) clearAvatar { + resultGroupContext.hasAvatar = NO; + resultGroupContext.avatar = [OWSSignalServiceProtosAttachmentPointer defaultInstance]; + return self; +} +@end + +@interface OWSSignalServiceProtosContactDetails () +@property (strong) NSString* number; +@property (strong) NSString* name; +@property (strong) OWSSignalServiceProtosContactDetailsAvatar* avatar; +@end + +@implementation OWSSignalServiceProtosContactDetails + +- (BOOL) hasNumber { + return !!hasNumber_; +} +- (void) setHasNumber:(BOOL) _value_ { + hasNumber_ = !!_value_; +} +@synthesize number; +- (BOOL) hasName { + return !!hasName_; +} +- (void) setHasName:(BOOL) _value_ { + hasName_ = !!_value_; +} +@synthesize name; +- (BOOL) hasAvatar { + return !!hasAvatar_; +} +- (void) setHasAvatar:(BOOL) _value_ { + hasAvatar_ = !!_value_; +} +@synthesize avatar; +- (instancetype) init { + if ((self = [super init])) { + self.number = @""; + self.name = @""; + self.avatar = [OWSSignalServiceProtosContactDetailsAvatar defaultInstance]; + } + return self; +} +static OWSSignalServiceProtosContactDetails* defaultOWSSignalServiceProtosContactDetailsInstance = nil; ++ (void) initialize { + if (self == [OWSSignalServiceProtosContactDetails class]) { + defaultOWSSignalServiceProtosContactDetailsInstance = [[OWSSignalServiceProtosContactDetails alloc] init]; + } +} ++ (instancetype) defaultInstance { + return defaultOWSSignalServiceProtosContactDetailsInstance; +} +- (instancetype) defaultInstance { + return defaultOWSSignalServiceProtosContactDetailsInstance; +} +- (BOOL) isInitialized { + return YES; +} +- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { + if (self.hasNumber) { + [output writeString:1 value:self.number]; + } + if (self.hasName) { + [output writeString:2 value:self.name]; + } + if (self.hasAvatar) { + [output writeMessage:3 value:self.avatar]; + } + [self.unknownFields writeToCodedOutputStream:output]; +} +- (SInt32) serializedSize { + __block SInt32 size_ = memoizedSerializedSize; + if (size_ != -1) { + return size_; + } + + size_ = 0; + if (self.hasNumber) { + size_ += computeStringSize(1, self.number); + } + if (self.hasName) { + size_ += computeStringSize(2, self.name); + } + if (self.hasAvatar) { + size_ += computeMessageSize(3, self.avatar); + } + size_ += self.unknownFields.serializedSize; + memoizedSerializedSize = size_; + return size_; +} ++ (OWSSignalServiceProtosContactDetails*) parseFromData:(NSData*) data { + return (OWSSignalServiceProtosContactDetails*)[[[OWSSignalServiceProtosContactDetails builder] mergeFromData:data] build]; +} ++ (OWSSignalServiceProtosContactDetails*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosContactDetails*)[[[OWSSignalServiceProtosContactDetails builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosContactDetails*) parseFromInputStream:(NSInputStream*) input { + return (OWSSignalServiceProtosContactDetails*)[[[OWSSignalServiceProtosContactDetails builder] mergeFromInputStream:input] build]; +} ++ (OWSSignalServiceProtosContactDetails*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosContactDetails*)[[[OWSSignalServiceProtosContactDetails builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosContactDetails*) parseFromCodedInputStream:(PBCodedInputStream*) input { + return (OWSSignalServiceProtosContactDetails*)[[[OWSSignalServiceProtosContactDetails builder] mergeFromCodedInputStream:input] build]; +} ++ (OWSSignalServiceProtosContactDetails*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosContactDetails*)[[[OWSSignalServiceProtosContactDetails builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosContactDetailsBuilder*) builder { + return [[OWSSignalServiceProtosContactDetailsBuilder alloc] init]; +} ++ (OWSSignalServiceProtosContactDetailsBuilder*) builderWithPrototype:(OWSSignalServiceProtosContactDetails*) prototype { + return [[OWSSignalServiceProtosContactDetails builder] mergeFrom:prototype]; +} +- (OWSSignalServiceProtosContactDetailsBuilder*) builder { + return [OWSSignalServiceProtosContactDetails builder]; +} +- (OWSSignalServiceProtosContactDetailsBuilder*) toBuilder { + return [OWSSignalServiceProtosContactDetails builderWithPrototype:self]; +} +- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { + if (self.hasNumber) { + [output appendFormat:@"%@%@: %@\n", indent, @"number", self.number]; + } + if (self.hasName) { + [output appendFormat:@"%@%@: %@\n", indent, @"name", self.name]; + } + if (self.hasAvatar) { + [output appendFormat:@"%@%@ {\n", indent, @"avatar"]; + [self.avatar writeDescriptionTo:output + withIndent:[NSString stringWithFormat:@"%@ ", indent]]; + [output appendFormat:@"%@}\n", indent]; + } + [self.unknownFields writeDescriptionTo:output withIndent:indent]; +} +- (void) storeInDictionary:(NSMutableDictionary *)dictionary { + if (self.hasNumber) { + [dictionary setObject: self.number forKey: @"number"]; + } + if (self.hasName) { + [dictionary setObject: self.name forKey: @"name"]; + } + if (self.hasAvatar) { + NSMutableDictionary *messageDictionary = [NSMutableDictionary dictionary]; + [self.avatar storeInDictionary:messageDictionary]; + [dictionary setObject:[NSDictionary dictionaryWithDictionary:messageDictionary] forKey:@"avatar"]; + } + [self.unknownFields storeInDictionary:dictionary]; +} +- (BOOL) isEqual:(id)other { + if (other == self) { + return YES; + } + if (![other isKindOfClass:[OWSSignalServiceProtosContactDetails class]]) { + return NO; + } + OWSSignalServiceProtosContactDetails *otherMessage = other; + return + self.hasNumber == otherMessage.hasNumber && + (!self.hasNumber || [self.number isEqual:otherMessage.number]) && + self.hasName == otherMessage.hasName && + (!self.hasName || [self.name isEqual:otherMessage.name]) && + self.hasAvatar == otherMessage.hasAvatar && + (!self.hasAvatar || [self.avatar isEqual:otherMessage.avatar]) && + (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); +} +- (NSUInteger) hash { + __block NSUInteger hashCode = 7; + if (self.hasNumber) { + hashCode = hashCode * 31 + [self.number hash]; + } + if (self.hasName) { + hashCode = hashCode * 31 + [self.name hash]; + } + if (self.hasAvatar) { + hashCode = hashCode * 31 + [self.avatar hash]; + } + hashCode = hashCode * 31 + [self.unknownFields hash]; + return hashCode; +} +@end + +@interface OWSSignalServiceProtosContactDetailsAvatar () +@property (strong) NSString* contentType; +@property UInt32 length; +@end + +@implementation OWSSignalServiceProtosContactDetailsAvatar + +- (BOOL) hasContentType { + return !!hasContentType_; +} +- (void) setHasContentType:(BOOL) _value_ { + hasContentType_ = !!_value_; +} +@synthesize contentType; +- (BOOL) hasLength { + return !!hasLength_; +} +- (void) setHasLength:(BOOL) _value_ { + hasLength_ = !!_value_; +} +@synthesize length; +- (instancetype) init { + if ((self = [super init])) { + self.contentType = @""; + self.length = 0; + } + return self; +} +static OWSSignalServiceProtosContactDetailsAvatar* defaultOWSSignalServiceProtosContactDetailsAvatarInstance = nil; ++ (void) initialize { + if (self == [OWSSignalServiceProtosContactDetailsAvatar class]) { + defaultOWSSignalServiceProtosContactDetailsAvatarInstance = [[OWSSignalServiceProtosContactDetailsAvatar alloc] init]; + } +} ++ (instancetype) defaultInstance { + return defaultOWSSignalServiceProtosContactDetailsAvatarInstance; +} +- (instancetype) defaultInstance { + return defaultOWSSignalServiceProtosContactDetailsAvatarInstance; +} +- (BOOL) isInitialized { + return YES; +} +- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { + if (self.hasContentType) { + [output writeString:1 value:self.contentType]; + } + if (self.hasLength) { + [output writeUInt32:2 value:self.length]; + } + [self.unknownFields writeToCodedOutputStream:output]; +} +- (SInt32) serializedSize { + __block SInt32 size_ = memoizedSerializedSize; + if (size_ != -1) { + return size_; + } + + size_ = 0; + if (self.hasContentType) { + size_ += computeStringSize(1, self.contentType); + } + if (self.hasLength) { + size_ += computeUInt32Size(2, self.length); + } + size_ += self.unknownFields.serializedSize; + memoizedSerializedSize = size_; + return size_; +} ++ (OWSSignalServiceProtosContactDetailsAvatar*) parseFromData:(NSData*) data { + return (OWSSignalServiceProtosContactDetailsAvatar*)[[[OWSSignalServiceProtosContactDetailsAvatar builder] mergeFromData:data] build]; +} ++ (OWSSignalServiceProtosContactDetailsAvatar*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosContactDetailsAvatar*)[[[OWSSignalServiceProtosContactDetailsAvatar builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosContactDetailsAvatar*) parseFromInputStream:(NSInputStream*) input { + return (OWSSignalServiceProtosContactDetailsAvatar*)[[[OWSSignalServiceProtosContactDetailsAvatar builder] mergeFromInputStream:input] build]; +} ++ (OWSSignalServiceProtosContactDetailsAvatar*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosContactDetailsAvatar*)[[[OWSSignalServiceProtosContactDetailsAvatar builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosContactDetailsAvatar*) parseFromCodedInputStream:(PBCodedInputStream*) input { + return (OWSSignalServiceProtosContactDetailsAvatar*)[[[OWSSignalServiceProtosContactDetailsAvatar builder] mergeFromCodedInputStream:input] build]; +} ++ (OWSSignalServiceProtosContactDetailsAvatar*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosContactDetailsAvatar*)[[[OWSSignalServiceProtosContactDetailsAvatar builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosContactDetailsAvatarBuilder*) builder { + return [[OWSSignalServiceProtosContactDetailsAvatarBuilder alloc] init]; +} ++ (OWSSignalServiceProtosContactDetailsAvatarBuilder*) builderWithPrototype:(OWSSignalServiceProtosContactDetailsAvatar*) prototype { + return [[OWSSignalServiceProtosContactDetailsAvatar builder] mergeFrom:prototype]; +} +- (OWSSignalServiceProtosContactDetailsAvatarBuilder*) builder { + return [OWSSignalServiceProtosContactDetailsAvatar builder]; +} +- (OWSSignalServiceProtosContactDetailsAvatarBuilder*) toBuilder { + return [OWSSignalServiceProtosContactDetailsAvatar builderWithPrototype:self]; +} +- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { + if (self.hasContentType) { + [output appendFormat:@"%@%@: %@\n", indent, @"contentType", self.contentType]; + } + if (self.hasLength) { + [output appendFormat:@"%@%@: %@\n", indent, @"length", [NSNumber numberWithInteger:self.length]]; + } + [self.unknownFields writeDescriptionTo:output withIndent:indent]; +} +- (void) storeInDictionary:(NSMutableDictionary *)dictionary { + if (self.hasContentType) { + [dictionary setObject: self.contentType forKey: @"contentType"]; + } + if (self.hasLength) { + [dictionary setObject: [NSNumber numberWithInteger:self.length] forKey: @"length"]; + } + [self.unknownFields storeInDictionary:dictionary]; +} +- (BOOL) isEqual:(id)other { + if (other == self) { + return YES; + } + if (![other isKindOfClass:[OWSSignalServiceProtosContactDetailsAvatar class]]) { + return NO; + } + OWSSignalServiceProtosContactDetailsAvatar *otherMessage = other; + return + self.hasContentType == otherMessage.hasContentType && + (!self.hasContentType || [self.contentType isEqual:otherMessage.contentType]) && + self.hasLength == otherMessage.hasLength && + (!self.hasLength || self.length == otherMessage.length) && + (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); +} +- (NSUInteger) hash { + __block NSUInteger hashCode = 7; + if (self.hasContentType) { + hashCode = hashCode * 31 + [self.contentType hash]; + } + if (self.hasLength) { + hashCode = hashCode * 31 + [[NSNumber numberWithInteger:self.length] hash]; + } + hashCode = hashCode * 31 + [self.unknownFields hash]; + return hashCode; +} +@end + +@interface OWSSignalServiceProtosContactDetailsAvatarBuilder() +@property (strong) OWSSignalServiceProtosContactDetailsAvatar* resultAvatar; +@end + +@implementation OWSSignalServiceProtosContactDetailsAvatarBuilder +@synthesize resultAvatar; +- (instancetype) init { + if ((self = [super init])) { + self.resultAvatar = [[OWSSignalServiceProtosContactDetailsAvatar alloc] init]; + } + return self; +} +- (PBGeneratedMessage*) internalGetResult { + return resultAvatar; +} +- (OWSSignalServiceProtosContactDetailsAvatarBuilder*) clear { + self.resultAvatar = [[OWSSignalServiceProtosContactDetailsAvatar alloc] init]; + return self; +} +- (OWSSignalServiceProtosContactDetailsAvatarBuilder*) clone { + return [OWSSignalServiceProtosContactDetailsAvatar builderWithPrototype:resultAvatar]; +} +- (OWSSignalServiceProtosContactDetailsAvatar*) defaultInstance { + return [OWSSignalServiceProtosContactDetailsAvatar defaultInstance]; +} +- (OWSSignalServiceProtosContactDetailsAvatar*) build { + [self checkInitialized]; + return [self buildPartial]; +} +- (OWSSignalServiceProtosContactDetailsAvatar*) buildPartial { + OWSSignalServiceProtosContactDetailsAvatar* returnMe = resultAvatar; + self.resultAvatar = nil; + return returnMe; +} +- (OWSSignalServiceProtosContactDetailsAvatarBuilder*) mergeFrom:(OWSSignalServiceProtosContactDetailsAvatar*) other { + if (other == [OWSSignalServiceProtosContactDetailsAvatar defaultInstance]) { + return self; + } + if (other.hasContentType) { + [self setContentType:other.contentType]; + } + if (other.hasLength) { + [self setLength:other.length]; + } + [self mergeUnknownFields:other.unknownFields]; + return self; +} +- (OWSSignalServiceProtosContactDetailsAvatarBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { + return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; +} +- (OWSSignalServiceProtosContactDetailsAvatarBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; + while (YES) { + SInt32 tag = [input readTag]; + switch (tag) { + case 0: + [self setUnknownFields:[unknownFields build]]; + return self; + default: { + if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) { + [self setUnknownFields:[unknownFields build]]; + return self; + } + break; + } + case 10: { + [self setContentType:[input readString]]; + break; + } + case 16: { + [self setLength:[input readUInt32]]; + break; + } + } + } +} +- (BOOL) hasContentType { + return resultAvatar.hasContentType; +} +- (NSString*) contentType { + return resultAvatar.contentType; +} +- (OWSSignalServiceProtosContactDetailsAvatarBuilder*) setContentType:(NSString*) value { + resultAvatar.hasContentType = YES; + resultAvatar.contentType = value; + return self; +} +- (OWSSignalServiceProtosContactDetailsAvatarBuilder*) clearContentType { + resultAvatar.hasContentType = NO; + resultAvatar.contentType = @""; + return self; +} +- (BOOL) hasLength { + return resultAvatar.hasLength; +} +- (UInt32) length { + return resultAvatar.length; +} +- (OWSSignalServiceProtosContactDetailsAvatarBuilder*) setLength:(UInt32) value { + resultAvatar.hasLength = YES; + resultAvatar.length = value; + return self; +} +- (OWSSignalServiceProtosContactDetailsAvatarBuilder*) clearLength { + resultAvatar.hasLength = NO; + resultAvatar.length = 0; + return self; +} +@end + +@interface OWSSignalServiceProtosContactDetailsBuilder() +@property (strong) OWSSignalServiceProtosContactDetails* resultContactDetails; +@end + +@implementation OWSSignalServiceProtosContactDetailsBuilder +@synthesize resultContactDetails; +- (instancetype) init { + if ((self = [super init])) { + self.resultContactDetails = [[OWSSignalServiceProtosContactDetails alloc] init]; + } + return self; +} +- (PBGeneratedMessage*) internalGetResult { + return resultContactDetails; +} +- (OWSSignalServiceProtosContactDetailsBuilder*) clear { + self.resultContactDetails = [[OWSSignalServiceProtosContactDetails alloc] init]; + return self; +} +- (OWSSignalServiceProtosContactDetailsBuilder*) clone { + return [OWSSignalServiceProtosContactDetails builderWithPrototype:resultContactDetails]; +} +- (OWSSignalServiceProtosContactDetails*) defaultInstance { + return [OWSSignalServiceProtosContactDetails defaultInstance]; +} +- (OWSSignalServiceProtosContactDetails*) build { + [self checkInitialized]; + return [self buildPartial]; +} +- (OWSSignalServiceProtosContactDetails*) buildPartial { + OWSSignalServiceProtosContactDetails* returnMe = resultContactDetails; + self.resultContactDetails = nil; + return returnMe; +} +- (OWSSignalServiceProtosContactDetailsBuilder*) mergeFrom:(OWSSignalServiceProtosContactDetails*) other { + if (other == [OWSSignalServiceProtosContactDetails defaultInstance]) { + return self; + } + if (other.hasNumber) { + [self setNumber:other.number]; + } + if (other.hasName) { + [self setName:other.name]; + } + if (other.hasAvatar) { + [self mergeAvatar:other.avatar]; + } + [self mergeUnknownFields:other.unknownFields]; + return self; +} +- (OWSSignalServiceProtosContactDetailsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { + return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; +} +- (OWSSignalServiceProtosContactDetailsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; + while (YES) { + SInt32 tag = [input readTag]; + switch (tag) { + case 0: + [self setUnknownFields:[unknownFields build]]; + return self; + default: { + if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) { + [self setUnknownFields:[unknownFields build]]; + return self; + } + break; + } + case 10: { + [self setNumber:[input readString]]; + break; + } + case 18: { + [self setName:[input readString]]; + break; + } + case 26: { + OWSSignalServiceProtosContactDetailsAvatarBuilder* subBuilder = [OWSSignalServiceProtosContactDetailsAvatar builder]; + if (self.hasAvatar) { + [subBuilder mergeFrom:self.avatar]; + } + [input readMessage:subBuilder extensionRegistry:extensionRegistry]; + [self setAvatar:[subBuilder buildPartial]]; + break; + } + } + } +} +- (BOOL) hasNumber { + return resultContactDetails.hasNumber; +} +- (NSString*) number { + return resultContactDetails.number; +} +- (OWSSignalServiceProtosContactDetailsBuilder*) setNumber:(NSString*) value { + resultContactDetails.hasNumber = YES; + resultContactDetails.number = value; + return self; +} +- (OWSSignalServiceProtosContactDetailsBuilder*) clearNumber { + resultContactDetails.hasNumber = NO; + resultContactDetails.number = @""; + return self; +} +- (BOOL) hasName { + return resultContactDetails.hasName; +} +- (NSString*) name { + return resultContactDetails.name; +} +- (OWSSignalServiceProtosContactDetailsBuilder*) setName:(NSString*) value { + resultContactDetails.hasName = YES; + resultContactDetails.name = value; + return self; +} +- (OWSSignalServiceProtosContactDetailsBuilder*) clearName { + resultContactDetails.hasName = NO; + resultContactDetails.name = @""; + return self; +} +- (BOOL) hasAvatar { + return resultContactDetails.hasAvatar; +} +- (OWSSignalServiceProtosContactDetailsAvatar*) avatar { + return resultContactDetails.avatar; +} +- (OWSSignalServiceProtosContactDetailsBuilder*) setAvatar:(OWSSignalServiceProtosContactDetailsAvatar*) value { + resultContactDetails.hasAvatar = YES; + resultContactDetails.avatar = value; + return self; +} +- (OWSSignalServiceProtosContactDetailsBuilder*) setAvatarBuilder:(OWSSignalServiceProtosContactDetailsAvatarBuilder*) builderForValue { + return [self setAvatar:[builderForValue build]]; +} +- (OWSSignalServiceProtosContactDetailsBuilder*) mergeAvatar:(OWSSignalServiceProtosContactDetailsAvatar*) value { + if (resultContactDetails.hasAvatar && + resultContactDetails.avatar != [OWSSignalServiceProtosContactDetailsAvatar defaultInstance]) { + resultContactDetails.avatar = + [[[OWSSignalServiceProtosContactDetailsAvatar builderWithPrototype:resultContactDetails.avatar] mergeFrom:value] buildPartial]; + } else { + resultContactDetails.avatar = value; + } + resultContactDetails.hasAvatar = YES; + return self; +} +- (OWSSignalServiceProtosContactDetailsBuilder*) clearAvatar { + resultContactDetails.hasAvatar = NO; + resultContactDetails.avatar = [OWSSignalServiceProtosContactDetailsAvatar defaultInstance]; + return self; +} +@end + +@interface OWSSignalServiceProtosGroupDetails () +@property (strong) NSData* id; +@property (strong) NSString* name; +@property (strong) NSMutableArray * membersArray; +@property (strong) OWSSignalServiceProtosGroupDetailsAvatar* avatar; +@property BOOL active; +@end + +@implementation OWSSignalServiceProtosGroupDetails + +- (BOOL) hasId { + return !!hasId_; +} +- (void) setHasId:(BOOL) _value_ { + hasId_ = !!_value_; +} +@synthesize id; +- (BOOL) hasName { + return !!hasName_; +} +- (void) setHasName:(BOOL) _value_ { + hasName_ = !!_value_; +} +@synthesize name; +@synthesize membersArray; +@dynamic members; +- (BOOL) hasAvatar { + return !!hasAvatar_; +} +- (void) setHasAvatar:(BOOL) _value_ { + hasAvatar_ = !!_value_; +} +@synthesize avatar; +- (BOOL) hasActive { + return !!hasActive_; +} +- (void) setHasActive:(BOOL) _value_ { + hasActive_ = !!_value_; +} +- (BOOL) active { + return !!active_; +} +- (void) setActive:(BOOL) _value_ { + active_ = !!_value_; +} +- (instancetype) init { + if ((self = [super init])) { + self.id = [NSData data]; + self.name = @""; + self.avatar = [OWSSignalServiceProtosGroupDetailsAvatar defaultInstance]; + self.active = YES; + } + return self; +} +static OWSSignalServiceProtosGroupDetails* defaultOWSSignalServiceProtosGroupDetailsInstance = nil; ++ (void) initialize { + if (self == [OWSSignalServiceProtosGroupDetails class]) { + defaultOWSSignalServiceProtosGroupDetailsInstance = [[OWSSignalServiceProtosGroupDetails alloc] init]; + } +} ++ (instancetype) defaultInstance { + return defaultOWSSignalServiceProtosGroupDetailsInstance; +} +- (instancetype) defaultInstance { + return defaultOWSSignalServiceProtosGroupDetailsInstance; +} +- (NSArray *)members { + return membersArray; +} +- (NSString*)membersAtIndex:(NSUInteger)index { + return [membersArray objectAtIndex:index]; +} +- (BOOL) isInitialized { + return YES; +} +- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { + if (self.hasId) { + [output writeData:1 value:self.id]; + } + if (self.hasName) { + [output writeString:2 value:self.name]; + } + [self.membersArray enumerateObjectsUsingBlock:^(NSString *element, NSUInteger idx, BOOL *stop) { + [output writeString:3 value:element]; + }]; + if (self.hasAvatar) { + [output writeMessage:4 value:self.avatar]; + } + if (self.hasActive) { + [output writeBool:5 value:self.active]; + } + [self.unknownFields writeToCodedOutputStream:output]; +} +- (SInt32) serializedSize { + __block SInt32 size_ = memoizedSerializedSize; + if (size_ != -1) { + return size_; + } + + size_ = 0; + if (self.hasId) { + size_ += computeDataSize(1, self.id); + } + if (self.hasName) { + size_ += computeStringSize(2, self.name); + } + { + __block SInt32 dataSize = 0; + const NSUInteger count = self.membersArray.count; + [self.membersArray enumerateObjectsUsingBlock:^(NSString *element, NSUInteger idx, BOOL *stop) { + dataSize += computeStringSizeNoTag(element); + }]; + size_ += dataSize; + size_ += (SInt32)(1 * count); + } + if (self.hasAvatar) { + size_ += computeMessageSize(4, self.avatar); + } + if (self.hasActive) { + size_ += computeBoolSize(5, self.active); + } + size_ += self.unknownFields.serializedSize; + memoizedSerializedSize = size_; + return size_; +} ++ (OWSSignalServiceProtosGroupDetails*) parseFromData:(NSData*) data { + return (OWSSignalServiceProtosGroupDetails*)[[[OWSSignalServiceProtosGroupDetails builder] mergeFromData:data] build]; +} ++ (OWSSignalServiceProtosGroupDetails*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosGroupDetails*)[[[OWSSignalServiceProtosGroupDetails builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosGroupDetails*) parseFromInputStream:(NSInputStream*) input { + return (OWSSignalServiceProtosGroupDetails*)[[[OWSSignalServiceProtosGroupDetails builder] mergeFromInputStream:input] build]; +} ++ (OWSSignalServiceProtosGroupDetails*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosGroupDetails*)[[[OWSSignalServiceProtosGroupDetails builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosGroupDetails*) parseFromCodedInputStream:(PBCodedInputStream*) input { + return (OWSSignalServiceProtosGroupDetails*)[[[OWSSignalServiceProtosGroupDetails builder] mergeFromCodedInputStream:input] build]; +} ++ (OWSSignalServiceProtosGroupDetails*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosGroupDetails*)[[[OWSSignalServiceProtosGroupDetails builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosGroupDetailsBuilder*) builder { + return [[OWSSignalServiceProtosGroupDetailsBuilder alloc] init]; +} ++ (OWSSignalServiceProtosGroupDetailsBuilder*) builderWithPrototype:(OWSSignalServiceProtosGroupDetails*) prototype { + return [[OWSSignalServiceProtosGroupDetails builder] mergeFrom:prototype]; +} +- (OWSSignalServiceProtosGroupDetailsBuilder*) builder { + return [OWSSignalServiceProtosGroupDetails builder]; +} +- (OWSSignalServiceProtosGroupDetailsBuilder*) toBuilder { + return [OWSSignalServiceProtosGroupDetails builderWithPrototype:self]; +} +- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { + if (self.hasId) { + [output appendFormat:@"%@%@: %@\n", indent, @"id", self.id]; + } + if (self.hasName) { + [output appendFormat:@"%@%@: %@\n", indent, @"name", self.name]; + } + [self.membersArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { + [output appendFormat:@"%@%@: %@\n", indent, @"members", obj]; + }]; + if (self.hasAvatar) { + [output appendFormat:@"%@%@ {\n", indent, @"avatar"]; + [self.avatar writeDescriptionTo:output + withIndent:[NSString stringWithFormat:@"%@ ", indent]]; + [output appendFormat:@"%@}\n", indent]; + } + if (self.hasActive) { + [output appendFormat:@"%@%@: %@\n", indent, @"active", [NSNumber numberWithBool:self.active]]; + } + [self.unknownFields writeDescriptionTo:output withIndent:indent]; +} +- (void) storeInDictionary:(NSMutableDictionary *)dictionary { + if (self.hasId) { + [dictionary setObject: self.id forKey: @"id"]; + } + if (self.hasName) { + [dictionary setObject: self.name forKey: @"name"]; + } + [dictionary setObject:self.members forKey: @"members"]; + if (self.hasAvatar) { + NSMutableDictionary *messageDictionary = [NSMutableDictionary dictionary]; + [self.avatar storeInDictionary:messageDictionary]; + [dictionary setObject:[NSDictionary dictionaryWithDictionary:messageDictionary] forKey:@"avatar"]; + } + if (self.hasActive) { + [dictionary setObject: [NSNumber numberWithBool:self.active] forKey: @"active"]; + } + [self.unknownFields storeInDictionary:dictionary]; +} +- (BOOL) isEqual:(id)other { + if (other == self) { + return YES; + } + if (![other isKindOfClass:[OWSSignalServiceProtosGroupDetails class]]) { + return NO; + } + OWSSignalServiceProtosGroupDetails *otherMessage = other; + return + self.hasId == otherMessage.hasId && + (!self.hasId || [self.id isEqual:otherMessage.id]) && + self.hasName == otherMessage.hasName && + (!self.hasName || [self.name isEqual:otherMessage.name]) && + [self.membersArray isEqualToArray:otherMessage.membersArray] && + self.hasAvatar == otherMessage.hasAvatar && + (!self.hasAvatar || [self.avatar isEqual:otherMessage.avatar]) && + self.hasActive == otherMessage.hasActive && + (!self.hasActive || self.active == otherMessage.active) && + (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); +} +- (NSUInteger) hash { + __block NSUInteger hashCode = 7; + if (self.hasId) { + hashCode = hashCode * 31 + [self.id hash]; + } + if (self.hasName) { + hashCode = hashCode * 31 + [self.name hash]; + } + [self.membersArray enumerateObjectsUsingBlock:^(NSString *element, NSUInteger idx, BOOL *stop) { + hashCode = hashCode * 31 + [element hash]; + }]; + if (self.hasAvatar) { + hashCode = hashCode * 31 + [self.avatar hash]; + } + if (self.hasActive) { + hashCode = hashCode * 31 + [[NSNumber numberWithBool:self.active] hash]; + } + hashCode = hashCode * 31 + [self.unknownFields hash]; + return hashCode; +} +@end + +@interface OWSSignalServiceProtosGroupDetailsAvatar () +@property (strong) NSString* contentType; +@property UInt32 length; +@end + +@implementation OWSSignalServiceProtosGroupDetailsAvatar + +- (BOOL) hasContentType { + return !!hasContentType_; +} +- (void) setHasContentType:(BOOL) _value_ { + hasContentType_ = !!_value_; +} +@synthesize contentType; +- (BOOL) hasLength { + return !!hasLength_; +} +- (void) setHasLength:(BOOL) _value_ { + hasLength_ = !!_value_; +} +@synthesize length; +- (instancetype) init { + if ((self = [super init])) { + self.contentType = @""; + self.length = 0; + } + return self; +} +static OWSSignalServiceProtosGroupDetailsAvatar* defaultOWSSignalServiceProtosGroupDetailsAvatarInstance = nil; ++ (void) initialize { + if (self == [OWSSignalServiceProtosGroupDetailsAvatar class]) { + defaultOWSSignalServiceProtosGroupDetailsAvatarInstance = [[OWSSignalServiceProtosGroupDetailsAvatar alloc] init]; + } +} ++ (instancetype) defaultInstance { + return defaultOWSSignalServiceProtosGroupDetailsAvatarInstance; +} +- (instancetype) defaultInstance { + return defaultOWSSignalServiceProtosGroupDetailsAvatarInstance; +} +- (BOOL) isInitialized { + return YES; +} +- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output { + if (self.hasContentType) { + [output writeString:1 value:self.contentType]; + } + if (self.hasLength) { + [output writeUInt32:2 value:self.length]; + } + [self.unknownFields writeToCodedOutputStream:output]; +} +- (SInt32) serializedSize { + __block SInt32 size_ = memoizedSerializedSize; + if (size_ != -1) { + return size_; + } + + size_ = 0; + if (self.hasContentType) { + size_ += computeStringSize(1, self.contentType); + } + if (self.hasLength) { + size_ += computeUInt32Size(2, self.length); + } + size_ += self.unknownFields.serializedSize; + memoizedSerializedSize = size_; + return size_; +} ++ (OWSSignalServiceProtosGroupDetailsAvatar*) parseFromData:(NSData*) data { + return (OWSSignalServiceProtosGroupDetailsAvatar*)[[[OWSSignalServiceProtosGroupDetailsAvatar builder] mergeFromData:data] build]; +} ++ (OWSSignalServiceProtosGroupDetailsAvatar*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosGroupDetailsAvatar*)[[[OWSSignalServiceProtosGroupDetailsAvatar builder] mergeFromData:data extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosGroupDetailsAvatar*) parseFromInputStream:(NSInputStream*) input { + return (OWSSignalServiceProtosGroupDetailsAvatar*)[[[OWSSignalServiceProtosGroupDetailsAvatar builder] mergeFromInputStream:input] build]; +} ++ (OWSSignalServiceProtosGroupDetailsAvatar*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosGroupDetailsAvatar*)[[[OWSSignalServiceProtosGroupDetailsAvatar builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosGroupDetailsAvatar*) parseFromCodedInputStream:(PBCodedInputStream*) input { + return (OWSSignalServiceProtosGroupDetailsAvatar*)[[[OWSSignalServiceProtosGroupDetailsAvatar builder] mergeFromCodedInputStream:input] build]; +} ++ (OWSSignalServiceProtosGroupDetailsAvatar*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + return (OWSSignalServiceProtosGroupDetailsAvatar*)[[[OWSSignalServiceProtosGroupDetailsAvatar builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build]; +} ++ (OWSSignalServiceProtosGroupDetailsAvatarBuilder*) builder { + return [[OWSSignalServiceProtosGroupDetailsAvatarBuilder alloc] init]; +} ++ (OWSSignalServiceProtosGroupDetailsAvatarBuilder*) builderWithPrototype:(OWSSignalServiceProtosGroupDetailsAvatar*) prototype { + return [[OWSSignalServiceProtosGroupDetailsAvatar builder] mergeFrom:prototype]; +} +- (OWSSignalServiceProtosGroupDetailsAvatarBuilder*) builder { + return [OWSSignalServiceProtosGroupDetailsAvatar builder]; +} +- (OWSSignalServiceProtosGroupDetailsAvatarBuilder*) toBuilder { + return [OWSSignalServiceProtosGroupDetailsAvatar builderWithPrototype:self]; +} +- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent { + if (self.hasContentType) { + [output appendFormat:@"%@%@: %@\n", indent, @"contentType", self.contentType]; + } + if (self.hasLength) { + [output appendFormat:@"%@%@: %@\n", indent, @"length", [NSNumber numberWithInteger:self.length]]; + } + [self.unknownFields writeDescriptionTo:output withIndent:indent]; +} +- (void) storeInDictionary:(NSMutableDictionary *)dictionary { + if (self.hasContentType) { + [dictionary setObject: self.contentType forKey: @"contentType"]; + } + if (self.hasLength) { + [dictionary setObject: [NSNumber numberWithInteger:self.length] forKey: @"length"]; + } + [self.unknownFields storeInDictionary:dictionary]; +} +- (BOOL) isEqual:(id)other { + if (other == self) { + return YES; + } + if (![other isKindOfClass:[OWSSignalServiceProtosGroupDetailsAvatar class]]) { + return NO; + } + OWSSignalServiceProtosGroupDetailsAvatar *otherMessage = other; + return + self.hasContentType == otherMessage.hasContentType && + (!self.hasContentType || [self.contentType isEqual:otherMessage.contentType]) && + self.hasLength == otherMessage.hasLength && + (!self.hasLength || self.length == otherMessage.length) && + (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields])); +} +- (NSUInteger) hash { + __block NSUInteger hashCode = 7; + if (self.hasContentType) { + hashCode = hashCode * 31 + [self.contentType hash]; + } + if (self.hasLength) { + hashCode = hashCode * 31 + [[NSNumber numberWithInteger:self.length] hash]; + } + hashCode = hashCode * 31 + [self.unknownFields hash]; + return hashCode; +} +@end + +@interface OWSSignalServiceProtosGroupDetailsAvatarBuilder() +@property (strong) OWSSignalServiceProtosGroupDetailsAvatar* resultAvatar; +@end + +@implementation OWSSignalServiceProtosGroupDetailsAvatarBuilder +@synthesize resultAvatar; +- (instancetype) init { + if ((self = [super init])) { + self.resultAvatar = [[OWSSignalServiceProtosGroupDetailsAvatar alloc] init]; + } + return self; +} +- (PBGeneratedMessage*) internalGetResult { + return resultAvatar; +} +- (OWSSignalServiceProtosGroupDetailsAvatarBuilder*) clear { + self.resultAvatar = [[OWSSignalServiceProtosGroupDetailsAvatar alloc] init]; + return self; +} +- (OWSSignalServiceProtosGroupDetailsAvatarBuilder*) clone { + return [OWSSignalServiceProtosGroupDetailsAvatar builderWithPrototype:resultAvatar]; +} +- (OWSSignalServiceProtosGroupDetailsAvatar*) defaultInstance { + return [OWSSignalServiceProtosGroupDetailsAvatar defaultInstance]; +} +- (OWSSignalServiceProtosGroupDetailsAvatar*) build { + [self checkInitialized]; + return [self buildPartial]; +} +- (OWSSignalServiceProtosGroupDetailsAvatar*) buildPartial { + OWSSignalServiceProtosGroupDetailsAvatar* returnMe = resultAvatar; + self.resultAvatar = nil; + return returnMe; +} +- (OWSSignalServiceProtosGroupDetailsAvatarBuilder*) mergeFrom:(OWSSignalServiceProtosGroupDetailsAvatar*) other { + if (other == [OWSSignalServiceProtosGroupDetailsAvatar defaultInstance]) { + return self; + } + if (other.hasContentType) { + [self setContentType:other.contentType]; + } + if (other.hasLength) { + [self setLength:other.length]; + } + [self mergeUnknownFields:other.unknownFields]; + return self; +} +- (OWSSignalServiceProtosGroupDetailsAvatarBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { + return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; +} +- (OWSSignalServiceProtosGroupDetailsAvatarBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; + while (YES) { + SInt32 tag = [input readTag]; + switch (tag) { + case 0: + [self setUnknownFields:[unknownFields build]]; + return self; + default: { + if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) { + [self setUnknownFields:[unknownFields build]]; + return self; + } + break; + } + case 10: { + [self setContentType:[input readString]]; + break; + } + case 16: { + [self setLength:[input readUInt32]]; + break; + } + } + } +} +- (BOOL) hasContentType { + return resultAvatar.hasContentType; +} +- (NSString*) contentType { + return resultAvatar.contentType; +} +- (OWSSignalServiceProtosGroupDetailsAvatarBuilder*) setContentType:(NSString*) value { + resultAvatar.hasContentType = YES; + resultAvatar.contentType = value; + return self; +} +- (OWSSignalServiceProtosGroupDetailsAvatarBuilder*) clearContentType { + resultAvatar.hasContentType = NO; + resultAvatar.contentType = @""; + return self; +} +- (BOOL) hasLength { + return resultAvatar.hasLength; +} +- (UInt32) length { + return resultAvatar.length; +} +- (OWSSignalServiceProtosGroupDetailsAvatarBuilder*) setLength:(UInt32) value { + resultAvatar.hasLength = YES; + resultAvatar.length = value; + return self; +} +- (OWSSignalServiceProtosGroupDetailsAvatarBuilder*) clearLength { + resultAvatar.hasLength = NO; + resultAvatar.length = 0; + return self; +} +@end + +@interface OWSSignalServiceProtosGroupDetailsBuilder() +@property (strong) OWSSignalServiceProtosGroupDetails* resultGroupDetails; +@end + +@implementation OWSSignalServiceProtosGroupDetailsBuilder +@synthesize resultGroupDetails; +- (instancetype) init { + if ((self = [super init])) { + self.resultGroupDetails = [[OWSSignalServiceProtosGroupDetails alloc] init]; + } + return self; +} +- (PBGeneratedMessage*) internalGetResult { + return resultGroupDetails; +} +- (OWSSignalServiceProtosGroupDetailsBuilder*) clear { + self.resultGroupDetails = [[OWSSignalServiceProtosGroupDetails alloc] init]; + return self; +} +- (OWSSignalServiceProtosGroupDetailsBuilder*) clone { + return [OWSSignalServiceProtosGroupDetails builderWithPrototype:resultGroupDetails]; +} +- (OWSSignalServiceProtosGroupDetails*) defaultInstance { + return [OWSSignalServiceProtosGroupDetails defaultInstance]; +} +- (OWSSignalServiceProtosGroupDetails*) build { + [self checkInitialized]; + return [self buildPartial]; +} +- (OWSSignalServiceProtosGroupDetails*) buildPartial { + OWSSignalServiceProtosGroupDetails* returnMe = resultGroupDetails; + self.resultGroupDetails = nil; + return returnMe; +} +- (OWSSignalServiceProtosGroupDetailsBuilder*) mergeFrom:(OWSSignalServiceProtosGroupDetails*) other { + if (other == [OWSSignalServiceProtosGroupDetails defaultInstance]) { + return self; + } + if (other.hasId) { + [self setId:other.id]; + } + if (other.hasName) { + [self setName:other.name]; + } + if (other.membersArray.count > 0) { + if (resultGroupDetails.membersArray == nil) { + resultGroupDetails.membersArray = [[NSMutableArray alloc] initWithArray:other.membersArray]; + } else { + [resultGroupDetails.membersArray addObjectsFromArray:other.membersArray]; + } + } + if (other.hasAvatar) { + [self mergeAvatar:other.avatar]; + } + if (other.hasActive) { + [self setActive:other.active]; + } + [self mergeUnknownFields:other.unknownFields]; + return self; +} +- (OWSSignalServiceProtosGroupDetailsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input { + return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]]; +} +- (OWSSignalServiceProtosGroupDetailsBuilder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry { + PBUnknownFieldSetBuilder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields]; + while (YES) { + SInt32 tag = [input readTag]; + switch (tag) { + case 0: + [self setUnknownFields:[unknownFields build]]; + return self; + default: { + if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) { + [self setUnknownFields:[unknownFields build]]; + return self; + } + break; + } + case 10: { + [self setId:[input readData]]; + break; + } + case 18: { + [self setName:[input readString]]; + break; + } + case 26: { + [self addMembers:[input readString]]; + break; + } + case 34: { + OWSSignalServiceProtosGroupDetailsAvatarBuilder* subBuilder = [OWSSignalServiceProtosGroupDetailsAvatar builder]; + if (self.hasAvatar) { + [subBuilder mergeFrom:self.avatar]; + } + [input readMessage:subBuilder extensionRegistry:extensionRegistry]; + [self setAvatar:[subBuilder buildPartial]]; + break; + } + case 40: { + [self setActive:[input readBool]]; + break; + } + } + } +} +- (BOOL) hasId { + return resultGroupDetails.hasId; +} +- (NSData*) id { + return resultGroupDetails.id; +} +- (OWSSignalServiceProtosGroupDetailsBuilder*) setId:(NSData*) value { + resultGroupDetails.hasId = YES; + resultGroupDetails.id = value; + return self; +} +- (OWSSignalServiceProtosGroupDetailsBuilder*) clearId { + resultGroupDetails.hasId = NO; + resultGroupDetails.id = [NSData data]; + return self; +} +- (BOOL) hasName { + return resultGroupDetails.hasName; +} +- (NSString*) name { + return resultGroupDetails.name; +} +- (OWSSignalServiceProtosGroupDetailsBuilder*) setName:(NSString*) value { + resultGroupDetails.hasName = YES; + resultGroupDetails.name = value; + return self; +} +- (OWSSignalServiceProtosGroupDetailsBuilder*) clearName { + resultGroupDetails.hasName = NO; + resultGroupDetails.name = @""; + return self; +} +- (NSMutableArray *)members { + return resultGroupDetails.membersArray; +} +- (NSString*)membersAtIndex:(NSUInteger)index { + return [resultGroupDetails membersAtIndex:index]; +} +- (OWSSignalServiceProtosGroupDetailsBuilder *)addMembers:(NSString*)value { + if (resultGroupDetails.membersArray == nil) { + resultGroupDetails.membersArray = [[NSMutableArray alloc]init]; + } + [resultGroupDetails.membersArray addObject:value]; + return self; +} +- (OWSSignalServiceProtosGroupDetailsBuilder *)setMembersArray:(NSArray *)array { + resultGroupDetails.membersArray = [[NSMutableArray alloc] initWithArray:array]; + return self; +} +- (OWSSignalServiceProtosGroupDetailsBuilder *)clearMembers { + resultGroupDetails.membersArray = nil; + return self; +} +- (BOOL) hasAvatar { + return resultGroupDetails.hasAvatar; +} +- (OWSSignalServiceProtosGroupDetailsAvatar*) avatar { + return resultGroupDetails.avatar; +} +- (OWSSignalServiceProtosGroupDetailsBuilder*) setAvatar:(OWSSignalServiceProtosGroupDetailsAvatar*) value { + resultGroupDetails.hasAvatar = YES; + resultGroupDetails.avatar = value; + return self; +} +- (OWSSignalServiceProtosGroupDetailsBuilder*) setAvatarBuilder:(OWSSignalServiceProtosGroupDetailsAvatarBuilder*) builderForValue { + return [self setAvatar:[builderForValue build]]; +} +- (OWSSignalServiceProtosGroupDetailsBuilder*) mergeAvatar:(OWSSignalServiceProtosGroupDetailsAvatar*) value { + if (resultGroupDetails.hasAvatar && + resultGroupDetails.avatar != [OWSSignalServiceProtosGroupDetailsAvatar defaultInstance]) { + resultGroupDetails.avatar = + [[[OWSSignalServiceProtosGroupDetailsAvatar builderWithPrototype:resultGroupDetails.avatar] mergeFrom:value] buildPartial]; + } else { + resultGroupDetails.avatar = value; + } + resultGroupDetails.hasAvatar = YES; + return self; +} +- (OWSSignalServiceProtosGroupDetailsBuilder*) clearAvatar { + resultGroupDetails.hasAvatar = NO; + resultGroupDetails.avatar = [OWSSignalServiceProtosGroupDetailsAvatar defaultInstance]; + return self; +} +- (BOOL) hasActive { + return resultGroupDetails.hasActive; +} +- (BOOL) active { + return resultGroupDetails.active; +} +- (OWSSignalServiceProtosGroupDetailsBuilder*) setActive:(BOOL) value { + resultGroupDetails.hasActive = YES; + resultGroupDetails.active = value; + return self; +} +- (OWSSignalServiceProtosGroupDetailsBuilder*) clearActive { + resultGroupDetails.hasActive = NO; + resultGroupDetails.active = YES; + return self; +} +@end + + +// @@protoc_insertion_point(global_scope) diff --git a/src/Messages/TSMessagesManager+attachments.h b/src/Messages/TSMessagesManager+attachments.h index e2b34b9..7e36ad8 100644 --- a/src/Messages/TSMessagesManager+attachments.h +++ b/src/Messages/TSMessagesManager+attachments.h @@ -14,7 +14,8 @@ @interface TSMessagesManager (attachments) -- (void)handleReceivedMediaMessage:(IncomingPushMessageSignal *)message withContent:(PushMessageContent *)content; +- (void)handleReceivedMediaWithEnvelope:(OWSSignalServiceProtosEnvelope *)envelope + dataMessage:(OWSSignalServiceProtosDataMessage *)message; - (void)sendAttachment:(NSData *)attachmentData contentType:(NSString *)contentType diff --git a/src/Messages/TSMessagesManager+attachments.m b/src/Messages/TSMessagesManager+attachments.m index 436afe4..9a60572 100644 --- a/src/Messages/TSMessagesManager+attachments.m +++ b/src/Messages/TSMessagesManager+attachments.m @@ -31,63 +31,67 @@ dispatch_queue_t attachmentsQueue() { @implementation TSMessagesManager (attachments) -- (void)handleReceivedMediaMessage:(IncomingPushMessageSignal *)message withContent:(PushMessageContent *)content { - NSArray *attachmentsToRetrieve = - (content.group != nil && (content.group.type == PushMessageContentGroupContextTypeUpdate)) - ? [NSArray arrayWithObject:content.group.avatar] - : content.attachments; +- (void)handleReceivedMediaWithEnvelope:(OWSSignalServiceProtosEnvelope *)envelope + dataMessage:(OWSSignalServiceProtosDataMessage *)dataMessage +{ + // TODO extract group avatar handling rather than checking message type multiple times and forking logic. + + NSArray *attachmentsToRetrieve + = (dataMessage.hasGroup && (dataMessage.group.type == OWSSignalServiceProtosGroupContextTypeUpdate)) + ? [NSArray arrayWithObject:dataMessage.group.avatar] + : dataMessage.attachments; NSMutableArray *retrievedAttachments = [NSMutableArray array]; __block BOOL shouldProcessMessage = YES; [self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { - for (PushMessageContentAttachmentPointer *pointer in attachmentsToRetrieve) { - TSAttachmentPointer *attachmentPointer = - (content.group != nil && (content.group.type == PushMessageContentGroupContextTypeUpdate)) - ? [[TSAttachmentPointer alloc] initWithIdentifier:pointer.id - key:pointer.key - contentType:pointer.contentType - relay:message.relay - avatarOfGroupId:content.group.id] - : [[TSAttachmentPointer alloc] initWithIdentifier:pointer.id - key:pointer.key - contentType:pointer.contentType - relay:message.relay]; + for (OWSSignalServiceProtosAttachmentPointer *pointer in attachmentsToRetrieve) { + TSAttachmentPointer *attachmentPointer + = (dataMessage.hasGroup && (dataMessage.group.type == OWSSignalServiceProtosGroupContextTypeUpdate)) + ? [[TSAttachmentPointer alloc] initWithIdentifier:pointer.id + key:pointer.key + contentType:pointer.contentType + relay:envelope.relay + avatarOfGroupId:dataMessage.group.id] + : [[TSAttachmentPointer alloc] initWithIdentifier:pointer.id + key:pointer.key + contentType:pointer.contentType + relay:envelope.relay]; - if ([MIMETypeUtil isSupportedMIMEType:attachmentPointer.contentType]) { - [attachmentPointer saveWithTransaction:transaction]; - [retrievedAttachments addObject:attachmentPointer.uniqueId]; - shouldProcessMessage = YES; - } else { - TSThread *thread = - [TSContactThread getOrCreateThreadWithContactId:message.source transaction:transaction]; - TSInfoMessage *infoMessage = - [[TSInfoMessage alloc] initWithTimestamp:message.timestamp - inThread:thread - messageType:TSInfoMessageTypeUnsupportedMessage]; - [infoMessage saveWithTransaction:transaction]; - shouldProcessMessage = NO; - } - } + if ([MIMETypeUtil isSupportedMIMEType:attachmentPointer.contentType]) { + [attachmentPointer saveWithTransaction:transaction]; + [retrievedAttachments addObject:attachmentPointer.uniqueId]; + shouldProcessMessage = YES; + } else { + TSThread *thread = + [TSContactThread getOrCreateThreadWithContactId:envelope.source transaction:transaction]; + TSInfoMessage *infoMessage = + [[TSInfoMessage alloc] initWithTimestamp:envelope.timestamp + inThread:thread + messageType:TSInfoMessageTypeUnsupportedMessage]; + [infoMessage saveWithTransaction:transaction]; + shouldProcessMessage = NO; + } + } }]; if (shouldProcessMessage) { - [self - handleReceivedMessage:message - withContent:content - attachmentIds:retrievedAttachments - completionBlock:^(NSString *messageIdentifier) { - for (NSString *pointerId in retrievedAttachments) { - dispatch_async(attachmentsQueue(), ^{ - __block TSAttachmentPointer *pointer; + [self handleReceivedEnvelope:envelope + withDataMessage:dataMessage + attachmentIds:retrievedAttachments + completionBlock:^(NSString *messageIdentifier) { + for (NSString *pointerId in retrievedAttachments) { + dispatch_async(attachmentsQueue(), ^{ + __block TSAttachmentPointer *pointer; - [self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { - pointer = [TSAttachmentPointer fetchObjectWithUniqueID:pointerId transaction:transaction]; - }]; + [self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { + pointer = [TSAttachmentPointer fetchObjectWithUniqueID:pointerId + transaction:transaction]; + }]; - [self retrieveAttachment:pointer messageId:messageIdentifier]; - }); - } - }]; + [self retrieveAttachment:pointer messageId:messageIdentifier]; + }); + } + }]; } } diff --git a/src/Messages/TSMessagesManager+sendMessages.m b/src/Messages/TSMessagesManager+sendMessages.m index 73dabfa..1254e5b 100644 --- a/src/Messages/TSMessagesManager+sendMessages.m +++ b/src/Messages/TSMessagesManager+sendMessages.m @@ -511,16 +511,16 @@ dispatch_queue_t sendingQueue() { - (NSData *)plainTextForMessage:(TSOutgoingMessage *)message inThread:(TSThread *)thread { - PushMessageContentBuilder *builder = [PushMessageContentBuilder new]; + OWSSignalServiceProtosDataMessageBuilder *builder = [OWSSignalServiceProtosDataMessageBuilder new]; [builder setBody:message.body]; BOOL processAttachments = YES; if ([thread isKindOfClass:[TSGroupThread class]]) { TSGroupThread *gThread = (TSGroupThread *)thread; - PushMessageContentGroupContextBuilder *groupBuilder = [PushMessageContentGroupContextBuilder new]; + OWSSignalServiceProtosGroupContextBuilder *groupBuilder = [OWSSignalServiceProtosGroupContextBuilder new]; switch (message.groupMetaMessage) { case TSGroupMessageQuit: - [groupBuilder setType:PushMessageContentGroupContextTypeQuit]; + [groupBuilder setType:OWSSignalServiceProtosGroupContextTypeQuit]; break; case TSGroupMessageUpdate: case TSGroupMessageNew: { @@ -528,8 +528,8 @@ dispatch_queue_t sendingQueue() { id dbObject = [TSAttachmentStream fetchObjectWithUniqueID:message.attachmentIds[0]]; if ([dbObject isKindOfClass:[TSAttachmentStream class]]) { TSAttachmentStream *attachment = (TSAttachmentStream *)dbObject; - PushMessageContentAttachmentPointerBuilder *attachmentbuilder = - [PushMessageContentAttachmentPointerBuilder new]; + OWSSignalServiceProtosAttachmentPointerBuilder *attachmentbuilder = + [OWSSignalServiceProtosAttachmentPointerBuilder new]; [attachmentbuilder setId:[attachment.identifier unsignedLongLongValue]]; [attachmentbuilder setContentType:attachment.contentType]; [attachmentbuilder setKey:attachment.encryptionKey]; @@ -539,11 +539,11 @@ dispatch_queue_t sendingQueue() { } [groupBuilder setMembersArray:gThread.groupModel.groupMemberIds]; [groupBuilder setName:gThread.groupModel.groupName]; - [groupBuilder setType:PushMessageContentGroupContextTypeUpdate]; + [groupBuilder setType:OWSSignalServiceProtosGroupContextTypeUpdate]; break; } default: - [groupBuilder setType:PushMessageContentGroupContextTypeDeliver]; + [groupBuilder setType:OWSSignalServiceProtosGroupContextTypeDeliver]; break; } [groupBuilder setId:gThread.groupModel.groupId]; @@ -557,8 +557,8 @@ dispatch_queue_t sendingQueue() { if ([dbObject isKindOfClass:[TSAttachmentStream class]]) { TSAttachmentStream *attachment = (TSAttachmentStream *)dbObject; - PushMessageContentAttachmentPointerBuilder *attachmentbuilder = - [PushMessageContentAttachmentPointerBuilder new]; + OWSSignalServiceProtosAttachmentPointerBuilder *attachmentbuilder = + [OWSSignalServiceProtosAttachmentPointerBuilder new]; [attachmentbuilder setId:[attachment.identifier unsignedLongLongValue]]; [attachmentbuilder setContentType:attachment.contentType]; [attachmentbuilder setKey:attachment.encryptionKey]; diff --git a/src/Messages/TSMessagesManager.h b/src/Messages/TSMessagesManager.h index 9c6a7c5..752f814 100644 --- a/src/Messages/TSMessagesManager.h +++ b/src/Messages/TSMessagesManager.h @@ -1,13 +1,14 @@ // Created by Frederic Jacobs on 11/11/14. // Copyright (c) 2014 Open Whisper Systems. All rights reserved. -#import "IncomingPushMessageSignal.pb.h" #import "TSIncomingMessage.h" #import "TSInvalidIdentityKeySendingErrorMessage.h" #import "TSOutgoingMessage.h" @class TSCall; @class YapDatabaseConnection; +@class OWSSignalServiceProtosEnvelope; +@class OWSSignalServiceProtosDataMessage; @interface TSMessagesManager : NSObject @@ -15,18 +16,16 @@ @property (readonly) YapDatabaseConnection *dbConnection; -- (void)handleMessageSignal:(IncomingPushMessageSignal *)messageSignal; +- (void)handleReceivedEnvelope:(OWSSignalServiceProtosEnvelope *)envelope; - (void)processException:(NSException *)exception outgoingMessage:(TSOutgoingMessage *)message inThread:(TSThread *)thread; -- (void)handleReceivedMessage:(IncomingPushMessageSignal *)message - withContent:(PushMessageContent *)content - attachmentIds:(NSArray *)attachmentIds; -- (void)handleReceivedMessage:(IncomingPushMessageSignal *)message - withContent:(PushMessageContent *)content - attachmentIds:(NSArray *)attachmentIds - completionBlock:(void (^)(NSString *messageIdentifier))completionBlock; + +- (void)handleReceivedEnvelope:(OWSSignalServiceProtosEnvelope *)envelope + withDataMessage:(OWSSignalServiceProtosDataMessage *)dataMessage + attachmentIds:(NSArray *)attachmentIds + completionBlock:(void (^)(NSString *messageIdentifier))completionBlock; - (void)handleSendToMyself:(TSOutgoingMessage *)outgoingMessage; diff --git a/src/Messages/TSMessagesManager.m b/src/Messages/TSMessagesManager.m index 15c75dc..0b4a239 100644 --- a/src/Messages/TSMessagesManager.m +++ b/src/Messages/TSMessagesManager.m @@ -43,33 +43,31 @@ return self; } -- (void)handleMessageSignal:(IncomingPushMessageSignal *)messageSignal { +- (void)handleReceivedEnvelope:(OWSSignalServiceProtosEnvelope *)envelope +{ @try { - switch (messageSignal.type) { - case IncomingPushMessageSignalTypeCiphertext: - [self handleSecureMessage:messageSignal]; + switch (envelope.type) { + case OWSSignalServiceProtosEnvelopeTypeCiphertext: + [self handleSecureMessage:envelope]; break; - - case IncomingPushMessageSignalTypePrekeyBundle: - [self handlePreKeyBundle:messageSignal]; + case OWSSignalServiceProtosEnvelopeTypePrekeyBundle: + [self handlePreKeyBundle:envelope]; + break; + case OWSSignalServiceProtosEnvelopeTypeReceipt: + DDLogInfo(@"Received a delivery receipt"); + [self handleDeliveryReceipt:envelope]; break; // Other messages are just dismissed for now. - case IncomingPushMessageSignalTypeKeyExchange: + case OWSSignalServiceProtosEnvelopeTypeKeyExchange: DDLogWarn(@"Received Key Exchange Message, not supported"); break; - case IncomingPushMessageSignalTypePlaintext: - DDLogWarn(@"Received a plaintext message"); - break; - case IncomingPushMessageSignalTypeReceipt: - DDLogInfo(@"Received a delivery receipt"); - [self handleDeliveryReceipt:messageSignal]; - break; - case IncomingPushMessageSignalTypeUnknown: + case OWSSignalServiceProtosEnvelopeTypeUnknown: DDLogWarn(@"Received an unknown message type"); break; default: + DDLogWarn(@"Received unhandled envelope type: %d", envelope.type); break; } } @catch (NSException *exception) { @@ -77,38 +75,46 @@ } } -- (void)handleDeliveryReceipt:(IncomingPushMessageSignal *)signal { +- (void)handleDeliveryReceipt:(OWSSignalServiceProtosEnvelope *)envelope +{ [self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { - TSInteraction *interaction = [TSInteraction interactionForTimestamp:signal.timestamp withTransaction:transaction]; - if ([interaction isKindOfClass:[TSOutgoingMessage class]]) { - TSOutgoingMessage *outgoingMessage = (TSOutgoingMessage *)interaction; - outgoingMessage.messageState = TSOutgoingMessageStateDelivered; + TSInteraction *interaction = + [TSInteraction interactionForTimestamp:envelope.timestamp withTransaction:transaction]; + if ([interaction isKindOfClass:[TSOutgoingMessage class]]) { + TSOutgoingMessage *outgoingMessage = (TSOutgoingMessage *)interaction; + outgoingMessage.messageState = TSOutgoingMessageStateDelivered; - [outgoingMessage saveWithTransaction:transaction]; - } + [outgoingMessage saveWithTransaction:transaction]; + } }]; } -- (void)handleSecureMessage:(IncomingPushMessageSignal *)secureMessage { +- (void)handleSecureMessage:(OWSSignalServiceProtosEnvelope *)messageEnvelope +{ @synchronized(self) { TSStorageManager *storageManager = [TSStorageManager sharedManager]; - NSString *recipientId = secureMessage.source; - int deviceId = (int)secureMessage.sourceDevice; + NSString *recipientId = messageEnvelope.source; + int deviceId = messageEnvelope.sourceDevice; if (![storageManager containsSession:recipientId deviceId:deviceId]) { [self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { - TSErrorMessage *errorMessage = - [TSErrorMessage missingSessionWithSignal:secureMessage withTransaction:transaction]; - [errorMessage saveWithTransaction:transaction]; + TSErrorMessage *errorMessage = + [TSErrorMessage missingSessionWithEnvelope:messageEnvelope withTransaction:transaction]; + [errorMessage saveWithTransaction:transaction]; }]; return; } - PushMessageContent *content; + // DEPRECATED - Remove after all clients have been upgraded. + NSData *encryptedData = messageEnvelope.hasContent ? messageEnvelope.content : messageEnvelope.legacyMessage; + if (!encryptedData) { + DDLogError(@"Skipping message envelope which had no encrypted data"); + return; + } + NSData *plaintextData; @try { - WhisperMessage *message = [[WhisperMessage alloc] initWithData:secureMessage.message]; - + WhisperMessage *message = [[WhisperMessage alloc] initWithData:encryptedData]; SessionCipher *cipher = [[SessionCipher alloc] initWithSessionStore:storageManager preKeyStore:storageManager signedPreKeyStore:storageManager @@ -116,29 +122,46 @@ recipientId:recipientId deviceId:deviceId]; - NSData *plaintext = [[cipher decrypt:message] removePadding]; - - content = [PushMessageContent parseFromData:plaintext]; + plaintextData = [[cipher decrypt:message] removePadding]; } @catch (NSException *exception) { - [self processException:exception pushSignal:secureMessage]; + [self processException:exception envelope:messageEnvelope]; return; } - [self handleIncomingMessage:secureMessage withPushContent:content]; + OWSSignalServiceProtosDataMessage *dataMessage; + if (messageEnvelope.hasContent) { // New style content payload + OWSSignalServiceProtosContent *content = [OWSSignalServiceProtosContent parseFromData:plaintextData]; + dataMessage = content.dataMessage; + } else if (messageEnvelope.hasLegacyMessage) { // DEPRECATED - Remove after all clients have been upgraded. + dataMessage = [OWSSignalServiceProtosDataMessage parseFromData:plaintextData]; + } + + if (!dataMessage) { + DDLogWarn(@"Ignoring content that has no dataMessage."); + return; + } + + [self handleIncomingEnvelope:messageEnvelope withDataMessage:dataMessage]; } } -- (void)handlePreKeyBundle:(IncomingPushMessageSignal *)preKeyMessage { +- (void)handlePreKeyBundle:(OWSSignalServiceProtosEnvelope *)preKeyEnvelope +{ @synchronized(self) { TSStorageManager *storageManager = [TSStorageManager sharedManager]; - NSString *recipientId = preKeyMessage.source; - int deviceId = (int)preKeyMessage.sourceDevice; + NSString *recipientId = preKeyEnvelope.source; + int deviceId = preKeyEnvelope.sourceDevice; - PushMessageContent *content; + // DEPRECATED - Remove after all clients have been upgraded. + NSData *encryptedData = preKeyEnvelope.hasContent ? preKeyEnvelope.content : preKeyEnvelope.legacyMessage; + if (!encryptedData) { + DDLogError(@"Skipping message envelope which had no encrypted data"); + return; + } + NSData *plaintextData; @try { - PreKeyWhisperMessage *message = [[PreKeyWhisperMessage alloc] initWithData:preKeyMessage.message]; - + PreKeyWhisperMessage *message = [[PreKeyWhisperMessage alloc] initWithData:encryptedData]; SessionCipher *cipher = [[SessionCipher alloc] initWithSessionStore:storageManager preKeyStore:storageManager signedPreKeyStore:storageManager @@ -146,27 +169,42 @@ recipientId:recipientId deviceId:deviceId]; - NSData *plaintext = [[cipher decrypt:message] removePadding]; - - content = [PushMessageContent parseFromData:plaintext]; + plaintextData = [[cipher decrypt:message] removePadding]; } @catch (NSException *exception) { - [self processException:exception pushSignal:preKeyMessage]; + [self processException:exception envelope:preKeyEnvelope]; return; } - [self handleIncomingMessage:preKeyMessage withPushContent:content]; + OWSSignalServiceProtosDataMessage *dataMessage; + if (preKeyEnvelope.hasContent) { + OWSSignalServiceProtosContent *content = [OWSSignalServiceProtosContent parseFromData:plaintextData]; + if (content.hasDataMessage) { + dataMessage = content.dataMessage; + } + } else if (preKeyEnvelope.hasLegacyMessage) { + // DEPRECATED - Remove after all clients have been upgraded. + dataMessage = [OWSSignalServiceProtosDataMessage parseFromData:plaintextData]; + } + + if (!dataMessage) { + DDLogError(@"unable to ascertain decrypted dataMessage from preKeyEnvelope"); + return; + } + + [self handleIncomingEnvelope:preKeyEnvelope withDataMessage:dataMessage]; } } -- (void)handleIncomingMessage:(IncomingPushMessageSignal *)incomingMessage withPushContent:(PushMessageContent *)content +- (void)handleIncomingEnvelope:(OWSSignalServiceProtosEnvelope *)incomingEnvelope + withDataMessage:(OWSSignalServiceProtosDataMessage *)dataMessage { - if (content.hasGroup) { + if (dataMessage.hasGroup) { __block BOOL ignoreMessage = NO; [self.dbConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) { TSGroupModel *emptyModelToFillOutId = - [[TSGroupModel alloc] initWithTitle:nil memberIds:nil image:nil groupId:content.group.id]; + [[TSGroupModel alloc] initWithTitle:nil memberIds:nil image:nil groupId:dataMessage.group.id]; TSGroupThread *gThread = [TSGroupThread threadWithGroupModel:emptyModelToFillOutId transaction:transaction]; - if (gThread == nil && content.group.type != PushMessageContentGroupContextTypeUpdate) { + if (gThread == nil && dataMessage.group.type != OWSSignalServiceProtosGroupContextTypeUpdate) { ignoreMessage = YES; } }]; @@ -176,38 +214,43 @@ return; } } - if ((content.flags & PushMessageContentFlagsEndSession) != 0) { + if ((dataMessage.flags & OWSSignalServiceProtosDataMessageFlagsEndSession) != 0) { DDLogVerbose(@"Received end session message..."); - [self handleEndSessionMessage:incomingMessage withContent:content]; - } else if (content.attachments.count > 0 || - (content.hasGroup && content.group.type == PushMessageContentGroupContextTypeUpdate && - content.group.hasAvatar)) { + [self handleEndSessionMessageWithEnvelope:incomingEnvelope dataMessage:dataMessage]; + } else if (dataMessage.attachments.count > 0 + || (dataMessage.hasGroup && dataMessage.group.type == OWSSignalServiceProtosGroupContextTypeUpdate + && dataMessage.group.avatar)) { + DDLogVerbose(@"Received push media message (attachment) or group with an avatar..."); - [self handleReceivedMediaMessage:incomingMessage withContent:content]; + [self handleReceivedMediaWithEnvelope:incomingEnvelope dataMessage:dataMessage]; } else { DDLogVerbose(@"Received individual push text message..."); - [self handleReceivedTextMessage:incomingMessage withContent:content]; + [self handleReceivedTextMessageWithEnvelope:incomingEnvelope dataMessage:dataMessage]; } } -- (void)handleEndSessionMessage:(IncomingPushMessageSignal *)message withContent:(PushMessageContent *)content { +- (void)handleEndSessionMessageWithEnvelope:(OWSSignalServiceProtosEnvelope *)endSessionEnvelope + dataMessage:(OWSSignalServiceProtosDataMessage *)dataMessage +{ [self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { - TSContactThread *thread = [TSContactThread getOrCreateThreadWithContactId:message.source transaction:transaction]; - uint64_t timeStamp = message.timestamp; + TSContactThread *thread = + [TSContactThread getOrCreateThreadWithContactId:endSessionEnvelope.source transaction:transaction]; + uint64_t timeStamp = endSessionEnvelope.timestamp; - if (thread) { - [[[TSInfoMessage alloc] initWithTimestamp:timeStamp - inThread:thread - messageType:TSInfoMessageTypeSessionDidEnd] saveWithTransaction:transaction]; - } + if (thread) { + [[[TSInfoMessage alloc] initWithTimestamp:timeStamp + inThread:thread + messageType:TSInfoMessageTypeSessionDidEnd] saveWithTransaction:transaction]; + } }]; - [[TSStorageManager sharedManager] deleteAllSessionsForContact:message.source]; + [[TSStorageManager sharedManager] deleteAllSessionsForContact:endSessionEnvelope.source]; } -- (void)handleReceivedTextMessage:(IncomingPushMessageSignal *)message withContent:(PushMessageContent *)content +- (void)handleReceivedTextMessageWithEnvelope:(OWSSignalServiceProtosEnvelope *)textMessageEnvelope + dataMessage:(OWSSignalServiceProtosDataMessage *)dataMessage { - [self handleReceivedMessage:message withContent:content attachmentIds:content.attachments]; + [self handleReceivedEnvelope:textMessageEnvelope withDataMessage:dataMessage attachmentIds:@[] completionBlock:nil]; } - (void)handleSendToMyself:(TSOutgoingMessage *)outgoingMessage @@ -224,35 +267,28 @@ }]; } -- (void)handleReceivedMessage:(IncomingPushMessageSignal *)message - withContent:(PushMessageContent *)content - attachmentIds:(NSArray *)attachmentIds +- (void)handleReceivedEnvelope:(OWSSignalServiceProtosEnvelope *)envelope + withDataMessage:(OWSSignalServiceProtosDataMessage *)dataMessage + attachmentIds:(NSArray *)attachmentIds + completionBlock:(void (^)(NSString *messageIdentifier))completionBlock { - [self handleReceivedMessage:message withContent:content attachmentIds:attachmentIds completionBlock:nil]; -} - -- (void)handleReceivedMessage:(IncomingPushMessageSignal *)message - withContent:(PushMessageContent *)content - attachmentIds:(NSArray *)attachmentIds - completionBlock:(void (^)(NSString *messageIdentifier))completionBlock -{ - uint64_t timeStamp = message.timestamp; - NSString *body = content.body; - NSData *groupId = content.hasGroup ? content.group.id : nil; + uint64_t timeStamp = envelope.timestamp; + NSString *body = dataMessage.body; + NSData *groupId = dataMessage.hasGroup ? dataMessage.group.id : nil; [self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { TSIncomingMessage *incomingMessage; TSThread *thread; if (groupId) { - TSGroupModel *model = - [[TSGroupModel alloc] initWithTitle:content.group.name - memberIds:[[[NSSet setWithArray:content.group.members] allObjects] mutableCopy] - image:nil - groupId:content.group.id]; + NSMutableArray *uniqueMemberIds = [[[NSSet setWithArray:dataMessage.group.members] allObjects] mutableCopy]; + TSGroupModel *model = [[TSGroupModel alloc] initWithTitle:dataMessage.group.name + memberIds:uniqueMemberIds + image:nil + groupId:dataMessage.group.id]; TSGroupThread *gThread = [TSGroupThread getOrCreateThreadWithGroupModel:model transaction:transaction]; [gThread saveWithTransaction:transaction]; - if (content.group.type == PushMessageContentGroupContextTypeUpdate) { + if (dataMessage.group.type == OWSSignalServiceProtosGroupContextTypeUpdate) { if ([attachmentIds count] == 1) { NSString *avatarId = attachmentIds[0]; TSAttachment *avatar = [TSAttachment fetchObjectWithUniqueID:avatarId]; @@ -273,18 +309,18 @@ inThread:gThread messageType:TSInfoMessageTypeGroupUpdate customMessage:updateGroupInfo] saveWithTransaction:transaction]; - } else if (content.group.type == PushMessageContentGroupContextTypeQuit) { + } else if (dataMessage.group.type == OWSSignalServiceProtosGroupContextTypeQuit) { NSString *nameString = - [[TextSecureKitEnv sharedEnv].contactsManager nameStringForPhoneIdentifier:message.source]; + [[TextSecureKitEnv sharedEnv].contactsManager nameStringForPhoneIdentifier:envelope.source]; if (!nameString) { - nameString = message.source; + nameString = envelope.source; } NSString *updateGroupInfo = [NSString stringWithFormat:NSLocalizedString(@"GROUP_MEMBER_LEFT", @""), nameString]; NSMutableArray *newGroupMembers = [NSMutableArray arrayWithArray:gThread.groupModel.groupMemberIds]; - [newGroupMembers removeObject:message.source]; + [newGroupMembers removeObject:envelope.source]; gThread.groupModel.groupMemberIds = newGroupMembers; [gThread saveWithTransaction:transaction]; @@ -295,7 +331,7 @@ } else { incomingMessage = [[TSIncomingMessage alloc] initWithTimestamp:timeStamp inThread:gThread - authorId:message.source + authorId:envelope.source messageBody:body attachmentIds:attachmentIds]; [incomingMessage saveWithTransaction:transaction]; @@ -303,9 +339,9 @@ thread = gThread; } else { - TSContactThread *cThread = [TSContactThread getOrCreateThreadWithContactId:message.source + TSContactThread *cThread = [TSContactThread getOrCreateThreadWithContactId:envelope.source transaction:transaction - pushSignal:message]; + envelope:envelope]; incomingMessage = [[TSIncomingMessage alloc] initWithTimestamp:timeStamp inThread:cThread @@ -324,7 +360,7 @@ TSGroupThread *gThread = (TSGroupThread *)thread; TSIncomingMessage *textMessage = [[TSIncomingMessage alloc] initWithTimestamp:textMessageTimestamp inThread:gThread - authorId:message.source + authorId:envelope.source messageBody:body attachmentIds:nil]; [textMessage saveWithTransaction:transaction]; @@ -356,27 +392,28 @@ }]; } -- (void)processException:(NSException *)exception pushSignal:(IncomingPushMessageSignal *)signal { +- (void)processException:(NSException *)exception envelope:(OWSSignalServiceProtosEnvelope *)envelope +{ DDLogError(@"Got exception: %@ of type: %@", exception.description, exception.name); [self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { TSErrorMessage *errorMessage; if ([exception.name isEqualToString:NoSessionException]) { - errorMessage = [TSErrorMessage missingSessionWithSignal:signal withTransaction:transaction]; + errorMessage = [TSErrorMessage missingSessionWithEnvelope:envelope withTransaction:transaction]; } else if ([exception.name isEqualToString:InvalidKeyException]) { - errorMessage = [TSErrorMessage invalidKeyExceptionWithSignal:signal withTransaction:transaction]; + errorMessage = [TSErrorMessage invalidKeyExceptionWithEnvelope:envelope withTransaction:transaction]; } else if ([exception.name isEqualToString:InvalidKeyIdException]) { - errorMessage = [TSErrorMessage invalidKeyExceptionWithSignal:signal withTransaction:transaction]; + errorMessage = [TSErrorMessage invalidKeyExceptionWithEnvelope:envelope withTransaction:transaction]; } else if ([exception.name isEqualToString:DuplicateMessageException]) { // Duplicate messages are dismissed return; } else if ([exception.name isEqualToString:InvalidVersionException]) { - errorMessage = [TSErrorMessage invalidVersionWithSignal:signal withTransaction:transaction]; + errorMessage = [TSErrorMessage invalidVersionWithEnvelope:envelope withTransaction:transaction]; } else if ([exception.name isEqualToString:UntrustedIdentityKeyException]) { errorMessage = - [TSInvalidIdentityKeyReceivingErrorMessage untrustedKeyWithSignal:signal withTransaction:transaction]; + [TSInvalidIdentityKeyReceivingErrorMessage untrustedKeyWithEnvelope:envelope withTransaction:transaction]; } else { - errorMessage = [TSErrorMessage corruptedMessageWithSignal:signal withTransaction:transaction]; + errorMessage = [TSErrorMessage corruptedMessageWithEnvelope:envelope withTransaction:transaction]; } [errorMessage saveWithTransaction:transaction]; diff --git a/src/Network/WebSockets/TSSocketManager.m b/src/Network/WebSockets/TSSocketManager.m index e339e65..bf8845c 100644 --- a/src/Network/WebSockets/TSSocketManager.m +++ b/src/Network/WebSockets/TSSocketManager.m @@ -167,9 +167,9 @@ NSString *const SocketConnectingNotification = @"SocketConnectingNotification"; return; } - IncomingPushMessageSignal *messageSignal = [IncomingPushMessageSignal parseFromData:decryptedPayload]; + OWSSignalServiceProtosEnvelope *envelope = [OWSSignalServiceProtosEnvelope parseFromData:decryptedPayload]; - [[TSMessagesManager sharedManager] handleMessageSignal:messageSignal]; + [[TSMessagesManager sharedManager] handleReceivedEnvelope:envelope]; } else { DDLogWarn(@"Unsupported WebSocket Request"); }