Respond to CR.

pull/1/head
Matthew Chen 7 years ago
parent d81d85c386
commit 3f2bee8383

@ -19,7 +19,9 @@ NSString *const kTSStorageManager_MayHaveLinkedDevices = @"kTSStorageManager_May
@interface OWSDeviceManager () @interface OWSDeviceManager ()
// This property should only be accessed while synchronized on self.
@property (atomic, nullable) NSNumber *mayHaveLinkedDevicesCached; @property (atomic, nullable) NSNumber *mayHaveLinkedDevicesCached;
@property (atomic) NSDate *lastReceivedSyncMessage; @property (atomic) NSDate *lastReceivedSyncMessage;
@end @end
@ -47,6 +49,8 @@ NSString *const kTSStorageManager_MayHaveLinkedDevices = @"kTSStorageManager_May
{ {
OWSAssert(dbConnection); OWSAssert(dbConnection);
@synchronized(self)
{
// We don't bother synchronizing around // We don't bother synchronizing around
if (!self.mayHaveLinkedDevicesCached) { if (!self.mayHaveLinkedDevicesCached) {
self.mayHaveLinkedDevicesCached = @([dbConnection boolForKey:kTSStorageManager_MayHaveLinkedDevices self.mayHaveLinkedDevicesCached = @([dbConnection boolForKey:kTSStorageManager_MayHaveLinkedDevices
@ -55,16 +59,20 @@ NSString *const kTSStorageManager_MayHaveLinkedDevices = @"kTSStorageManager_May
} }
return [self.mayHaveLinkedDevicesCached boolValue]; return [self.mayHaveLinkedDevicesCached boolValue];
}
} }
- (void)setMayHaveLinkedDevices - (void)setMayHaveLinkedDevices
{ {
@synchronized(self)
{
if (self.mayHaveLinkedDevicesCached != nil && self.mayHaveLinkedDevicesCached.boolValue) { if (self.mayHaveLinkedDevicesCached != nil && self.mayHaveLinkedDevicesCached.boolValue) {
// Skip redundant writes. // Skip redundant writes.
return; return;
} }
self.mayHaveLinkedDevicesCached = @(YES); self.mayHaveLinkedDevicesCached = @(YES);
}
// Note that we write async to avoid opening transactions within transactions. // Note that we write async to avoid opening transactions within transactions.
[TSStorageManager.sharedManager.newDatabaseConnection [TSStorageManager.sharedManager.newDatabaseConnection

Loading…
Cancel
Save