Skip to content

Commit

Permalink
Refactored isEnabled for thread safety
Browse files Browse the repository at this point in the history
  • Loading branch information
jzucker2 committed Mar 9, 2016
1 parent b0fac31 commit 6b760a5
Showing 1 changed file with 33 additions and 11 deletions.
44 changes: 33 additions & 11 deletions OHHTTPStubs/Sources/OHHTTPStubs.m
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ @interface OHHTTPStubsProtocol : NSURLProtocol @end
@interface OHHTTPStubs()
+ (instancetype)sharedInstance;
@property(atomic, copy) NSMutableArray* stubDescriptors;
@property(atomic, copy) NSNumber* enabledStateNumber;
@property(atomic, copy, nullable) void (^onStubActivationBlock)(NSURLRequest*, id<OHHTTPStubsDescriptor>);
@end

Expand Down Expand Up @@ -105,7 +106,7 @@ + (void)initialize
{
if (self == [OHHTTPStubs class])
{
[self setEnabled:YES];
[self _setEnable:YES];
}
}
- (instancetype)init
Expand All @@ -114,13 +115,14 @@ - (instancetype)init
if (self)
{
_stubDescriptors = [NSMutableArray array];
_enabledStateNumber = @YES; // assume initialize has already been run
}
return self;
}

- (void)dealloc
{
[self.class setEnabled:NO];
[self.class _setEnable:NO];
}

////////////////////////////////////////////////////////////////////////////////
Expand Down Expand Up @@ -149,25 +151,26 @@ +(void)removeAllStubs

#pragma mark > Disabling & Re-Enabling stubs

static BOOL currentEnabledState = NO;

+(void)setEnabled:(BOOL)enable
+(void)_setEnable:(BOOL)enable
{
currentEnabledState = NO;
if (enable && !currentEnabledState)
if (enable)
{
[NSURLProtocol registerClass:OHHTTPStubsProtocol.class];
}
else if (!enable && currentEnabledState)
else
{
[NSURLProtocol unregisterClass:OHHTTPStubsProtocol.class];
}
currentEnabledState = enable;
}

+ (BOOL)isEnabled
+(void)setEnabled:(BOOL)enabled
{
[OHHTTPStubs.sharedInstance setEnabled:enabled];
}

+(BOOL)isEnabled
{
return currentEnabledState;
return OHHTTPStubs.sharedInstance.isEnabled;
}

#if defined(__IPHONE_7_0) || defined(__MAC_10_9)
Expand Down Expand Up @@ -240,6 +243,25 @@ +(void)onStubActivation:( nullable void(^)(NSURLRequest* request, id<OHHTTPStubs
////////////////////////////////////////////////////////////////////////////////
#pragma mark - Private instance methods

-(BOOL)isEnabled
{
BOOL enabled = NO;
@synchronized(self)
{
enabled = _enabledStateNumber.boolValue;
}
return enabled;
}

-(void)setEnabled:(BOOL)enable
{
@synchronized(self)
{
_enabledStateNumber = @(enable);
[self.class _setEnable:enable];
}
}

-(void)addStub:(OHHTTPStubsDescriptor*)stubDesc
{
@synchronized(_stubDescriptors)
Expand Down

0 comments on commit 6b760a5

Please sign in to comment.