Rework incoming read receipts handling.

// FREEBIE
pull/1/head
Matthew Chen 8 years ago
parent 737503549d
commit 39a961e376

@ -45,7 +45,7 @@ message ReceiptMessage {
}
optional Type type = 1;
repeated uint64 timestamps = 2;
repeated uint64 timestamp = 2;
}
message CallMessage {

@ -383,22 +383,17 @@ NSString *NSStringFromOWSSignalServiceProtosGroupContextType(OWSSignalServicePro
@end
#define ReceiptMessage_type @"type"
#define ReceiptMessage_timestamps @"timestamps"
#define ReceiptMessage_when @"when"
#define ReceiptMessage_timestamp @"timestamp"
@interface OWSSignalServiceProtosReceiptMessage : PBGeneratedMessage<GeneratedMessageProtocol> {
@private
BOOL hasWhen_:1;
BOOL hasType_:1;
UInt64 when;
OWSSignalServiceProtosReceiptMessageType type;
PBAppendableArray * timestampsArray;
PBAppendableArray * timestampArray;
}
- (BOOL) hasType;
- (BOOL) hasWhen;
@property (readonly) OWSSignalServiceProtosReceiptMessageType type;
@property (readonly, strong) PBArray * timestamps;
@property (readonly) UInt64 when;
- (UInt64)timestampsAtIndex:(NSUInteger)index;
@property (readonly, strong) PBArray * timestamp;
- (UInt64)timestampAtIndex:(NSUInteger)index;
+ (instancetype) defaultInstance;
- (instancetype) defaultInstance;
@ -440,17 +435,12 @@ NSString *NSStringFromOWSSignalServiceProtosGroupContextType(OWSSignalServicePro
- (OWSSignalServiceProtosReceiptMessageBuilder*) setType:(OWSSignalServiceProtosReceiptMessageType) value;
- (OWSSignalServiceProtosReceiptMessageBuilder*) clearType;
- (PBAppendableArray *)timestamps;
- (UInt64)timestampsAtIndex:(NSUInteger)index;
- (OWSSignalServiceProtosReceiptMessageBuilder *)addTimestamps:(UInt64)value;
- (OWSSignalServiceProtosReceiptMessageBuilder *)setTimestampsArray:(NSArray *)array;
- (OWSSignalServiceProtosReceiptMessageBuilder *)setTimestampsValues:(const UInt64 *)values count:(NSUInteger)count;
- (OWSSignalServiceProtosReceiptMessageBuilder *)clearTimestamps;
- (BOOL) hasWhen;
- (UInt64) when;
- (OWSSignalServiceProtosReceiptMessageBuilder*) setWhen:(UInt64) value;
- (OWSSignalServiceProtosReceiptMessageBuilder*) clearWhen;
- (PBAppendableArray *)timestamp;
- (UInt64)timestampAtIndex:(NSUInteger)index;
- (OWSSignalServiceProtosReceiptMessageBuilder *)addTimestamp:(UInt64)value;
- (OWSSignalServiceProtosReceiptMessageBuilder *)setTimestampArray:(NSArray *)array;
- (OWSSignalServiceProtosReceiptMessageBuilder *)setTimestampValues:(const UInt64 *)values count:(NSUInteger)count;
- (OWSSignalServiceProtosReceiptMessageBuilder *)clearTimestamp;
@end
#define CallMessage_offer @"offer"

@ -1079,8 +1079,7 @@ static OWSSignalServiceProtosContent* defaultOWSSignalServiceProtosContentInstan
@interface OWSSignalServiceProtosReceiptMessage ()
@property OWSSignalServiceProtosReceiptMessageType type;
@property (strong) PBAppendableArray * timestampsArray;
@property UInt64 when;
@property (strong) PBAppendableArray * timestampArray;
@end
@implementation OWSSignalServiceProtosReceiptMessage
@ -1092,19 +1091,11 @@ static OWSSignalServiceProtosContent* defaultOWSSignalServiceProtosContentInstan
hasType_ = !!_value_;
}
@synthesize type;
@synthesize timestampsArray;
@dynamic timestamps;
- (BOOL) hasWhen {
return !!hasWhen_;
}
- (void) setHasWhen:(BOOL) _value_ {
hasWhen_ = !!_value_;
}
@synthesize when;
@synthesize timestampArray;
@dynamic timestamp;
- (instancetype) init {
if ((self = [super init])) {
self.type = OWSSignalServiceProtosReceiptMessageTypeDelivery;
self.when = 0L;
}
return self;
}
@ -1120,11 +1111,11 @@ static OWSSignalServiceProtosReceiptMessage* defaultOWSSignalServiceProtosReceip
- (instancetype) defaultInstance {
return defaultOWSSignalServiceProtosReceiptMessageInstance;
}
- (PBArray *)timestamps {
return timestampsArray;
- (PBArray *)timestamp {
return timestampArray;
}
- (UInt64)timestampsAtIndex:(NSUInteger)index {
return [timestampsArray uint64AtIndex:index];
- (UInt64)timestampAtIndex:(NSUInteger)index {
return [timestampArray uint64AtIndex:index];
}
- (BOOL) isInitialized {
return YES;
@ -1133,16 +1124,13 @@ static OWSSignalServiceProtosReceiptMessage* defaultOWSSignalServiceProtosReceip
if (self.hasType) {
[output writeEnum:1 value:self.type];
}
const NSUInteger timestampsArrayCount = self.timestampsArray.count;
if (timestampsArrayCount > 0) {
const UInt64 *values = (const UInt64 *)self.timestampsArray.data;
for (NSUInteger i = 0; i < timestampsArrayCount; ++i) {
const NSUInteger timestampArrayCount = self.timestampArray.count;
if (timestampArrayCount > 0) {
const UInt64 *values = (const UInt64 *)self.timestampArray.data;
for (NSUInteger i = 0; i < timestampArrayCount; ++i) {
[output writeUInt64:2 value:values[i]];
}
}
if (self.hasWhen) {
[output writeUInt64:3 value:self.when];
}
[self.unknownFields writeToCodedOutputStream:output];
}
- (SInt32) serializedSize {
@ -1157,17 +1145,14 @@ static OWSSignalServiceProtosReceiptMessage* defaultOWSSignalServiceProtosReceip
}
{
__block SInt32 dataSize = 0;
const NSUInteger count = self.timestampsArray.count;
const UInt64 *values = (const UInt64 *)self.timestampsArray.data;
const NSUInteger count = self.timestampArray.count;
const UInt64 *values = (const UInt64 *)self.timestampArray.data;
for (NSUInteger i = 0; i < count; ++i) {
dataSize += computeUInt64SizeNoTag(values[i]);
}
size_ += dataSize;
size_ += (SInt32)(1 * count);
}
if (self.hasWhen) {
size_ += computeUInt64Size(3, self.when);
}
size_ += self.unknownFields.serializedSize;
memoizedSerializedSize = size_;
return size_;
@ -1206,27 +1191,21 @@ static OWSSignalServiceProtosReceiptMessage* defaultOWSSignalServiceProtosReceip
if (self.hasType) {
[output appendFormat:@"%@%@: %@\n", indent, @"type", NSStringFromOWSSignalServiceProtosReceiptMessageType(self.type)];
}
[self.timestampsArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
[output appendFormat:@"%@%@: %@\n", indent, @"timestamps", obj];
[self.timestampArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
[output appendFormat:@"%@%@: %@\n", indent, @"timestamp", obj];
}];
if (self.hasWhen) {
[output appendFormat:@"%@%@: %@\n", indent, @"when", [NSNumber numberWithLongLong:self.when]];
}
[self.unknownFields writeDescriptionTo:output withIndent:indent];
}
- (void) storeInDictionary:(NSMutableDictionary *)dictionary {
if (self.hasType) {
[dictionary setObject: @(self.type) forKey: @"type"];
}
NSMutableArray * timestampsArrayArray = [NSMutableArray new];
NSUInteger timestampsArrayCount=self.timestampsArray.count;
for(int i=0;i<timestampsArrayCount;i++){
[timestampsArrayArray addObject: @([self.timestampsArray uint64AtIndex:i])];
}
[dictionary setObject: timestampsArrayArray forKey: @"timestamps"];
if (self.hasWhen) {
[dictionary setObject: [NSNumber numberWithLongLong:self.when] forKey: @"when"];
NSMutableArray * timestampArrayArray = [NSMutableArray new];
NSUInteger timestampArrayCount=self.timestampArray.count;
for(int i=0;i<timestampArrayCount;i++){
[timestampArrayArray addObject: @([self.timestampArray uint64AtIndex:i])];
}
[dictionary setObject: timestampArrayArray forKey: @"timestamp"];
[self.unknownFields storeInDictionary:dictionary];
}
- (BOOL) isEqual:(id)other {
@ -1240,9 +1219,7 @@ static OWSSignalServiceProtosReceiptMessage* defaultOWSSignalServiceProtosReceip
return
self.hasType == otherMessage.hasType &&
(!self.hasType || self.type == otherMessage.type) &&
[self.timestampsArray isEqualToArray:otherMessage.timestampsArray] &&
self.hasWhen == otherMessage.hasWhen &&
(!self.hasWhen || self.when == otherMessage.when) &&
[self.timestampArray isEqualToArray:otherMessage.timestampArray] &&
(self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
}
- (NSUInteger) hash {
@ -1250,12 +1227,9 @@ static OWSSignalServiceProtosReceiptMessage* defaultOWSSignalServiceProtosReceip
if (self.hasType) {
hashCode = hashCode * 31 + self.type;
}
[self.timestampsArray enumerateObjectsUsingBlock:^(NSNumber *obj, NSUInteger idx, BOOL *stop) {
[self.timestampArray enumerateObjectsUsingBlock:^(NSNumber *obj, NSUInteger idx, BOOL *stop) {
hashCode = hashCode * 31 + [obj longValue];
}];
if (self.hasWhen) {
hashCode = hashCode * 31 + [[NSNumber numberWithLongLong:self.when] hash];
}
hashCode = hashCode * 31 + [self.unknownFields hash];
return hashCode;
}
@ -1322,16 +1296,13 @@ NSString *NSStringFromOWSSignalServiceProtosReceiptMessageType(OWSSignalServiceP
if (other.hasType) {
[self setType:other.type];
}
if (other.timestampsArray.count > 0) {
if (resultReceiptMessage.timestampsArray == nil) {
resultReceiptMessage.timestampsArray = [other.timestampsArray copy];
if (other.timestampArray.count > 0) {
if (resultReceiptMessage.timestampArray == nil) {
resultReceiptMessage.timestampArray = [other.timestampArray copy];
} else {
[resultReceiptMessage.timestampsArray appendArray:other.timestampsArray];
[resultReceiptMessage.timestampArray appendArray:other.timestampArray];
}
}
if (other.hasWhen) {
[self setWhen:other.when];
}
[self mergeUnknownFields:other.unknownFields];
return self;
}
@ -1363,11 +1334,7 @@ NSString *NSStringFromOWSSignalServiceProtosReceiptMessageType(OWSSignalServiceP
break;
}
case 16: {
[self addTimestamps:[input readUInt64]];
break;
}
case 24: {
[self setWhen:[input readUInt64]];
[self addTimestamp:[input readUInt64]];
break;
}
}
@ -1389,45 +1356,29 @@ NSString *NSStringFromOWSSignalServiceProtosReceiptMessageType(OWSSignalServiceP
resultReceiptMessage.type = OWSSignalServiceProtosReceiptMessageTypeDelivery;
return self;
}
- (PBAppendableArray *)timestamps {
return resultReceiptMessage.timestampsArray;
}
- (UInt64)timestampsAtIndex:(NSUInteger)index {
return [resultReceiptMessage timestampsAtIndex:index];
}
- (OWSSignalServiceProtosReceiptMessageBuilder *)addTimestamps:(UInt64)value {
if (resultReceiptMessage.timestampsArray == nil) {
resultReceiptMessage.timestampsArray = [PBAppendableArray arrayWithValueType:PBArrayValueTypeUInt64];
- (PBAppendableArray *)timestamp {
return resultReceiptMessage.timestampArray;
}
[resultReceiptMessage.timestampsArray addUint64:value];
return self;
- (UInt64)timestampAtIndex:(NSUInteger)index {
return [resultReceiptMessage timestampAtIndex:index];
}
- (OWSSignalServiceProtosReceiptMessageBuilder *)setTimestampsArray:(NSArray *)array {
resultReceiptMessage.timestampsArray = [PBAppendableArray arrayWithArray:array valueType:PBArrayValueTypeUInt64];
return self;
- (OWSSignalServiceProtosReceiptMessageBuilder *)addTimestamp:(UInt64)value {
if (resultReceiptMessage.timestampArray == nil) {
resultReceiptMessage.timestampArray = [PBAppendableArray arrayWithValueType:PBArrayValueTypeUInt64];
}
- (OWSSignalServiceProtosReceiptMessageBuilder *)setTimestampsValues:(const UInt64 *)values count:(NSUInteger)count {
resultReceiptMessage.timestampsArray = [PBAppendableArray arrayWithValues:values count:count valueType:PBArrayValueTypeUInt64];
[resultReceiptMessage.timestampArray addUint64:value];
return self;
}
- (OWSSignalServiceProtosReceiptMessageBuilder *)clearTimestamps {
resultReceiptMessage.timestampsArray = nil;
- (OWSSignalServiceProtosReceiptMessageBuilder *)setTimestampArray:(NSArray *)array {
resultReceiptMessage.timestampArray = [PBAppendableArray arrayWithArray:array valueType:PBArrayValueTypeUInt64];
return self;
}
- (BOOL) hasWhen {
return resultReceiptMessage.hasWhen;
}
- (UInt64) when {
return resultReceiptMessage.when;
}
- (OWSSignalServiceProtosReceiptMessageBuilder*) setWhen:(UInt64) value {
resultReceiptMessage.hasWhen = YES;
resultReceiptMessage.when = value;
- (OWSSignalServiceProtosReceiptMessageBuilder *)setTimestampValues:(const UInt64 *)values count:(NSUInteger)count {
resultReceiptMessage.timestampArray = [PBAppendableArray arrayWithValues:values count:count valueType:PBArrayValueTypeUInt64];
return self;
}
- (OWSSignalServiceProtosReceiptMessageBuilder*) clearWhen {
resultReceiptMessage.hasWhen = NO;
resultReceiptMessage.when = 0L;
- (OWSSignalServiceProtosReceiptMessageBuilder *)clearTimestamp {
resultReceiptMessage.timestampArray = nil;
return self;
}
@end

Loading…
Cancel
Save