#import #import #import @interface MTRequestInternalId : NSObject { NSUInteger _value; } @end @implementation MTRequestInternalId - (instancetype)init { self = [super init]; if (self != nil) { static int32_t nextValue = 1; _value = OSAtomicIncrement32(&nextValue); } return self; } - (BOOL)isEqual:(id)object { return [object isKindOfClass:[MTRequestInternalId class]] && ((MTRequestInternalId *)object)->_value == _value; } - (NSUInteger)hash { return _value; } - (instancetype)copyWithZone:(NSZone *)__unused zone { MTRequestInternalId *another = [[MTRequestInternalId alloc] init]; if (another != nil) another->_value = _value; return another; } @end @implementation MTRequest - (instancetype)init { self = [super init]; if (self != nil) { _internalId = [[MTRequestInternalId alloc] init]; _dependsOnPasswordEntry = true; } return self; } - (void)setPayload:(NSData *)payload metadata:(id)metadata shortMetadata:(id)shortMetadata responseParser:(id (^)(NSData *))responseParser { _payload = payload; _metadata = metadata; _shortMetadata = shortMetadata; _responseParser = [responseParser copy]; } @end