2017-02-13 17:40:30 +01:00
|
|
|
//
|
|
|
|
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
|
|
|
|
//
|
|
|
|
|
2014-05-06 19:41:08 +02:00
|
|
|
#import "AnonymousTerminator.h"
|
|
|
|
|
|
|
|
@implementation AnonymousTerminator
|
|
|
|
|
2015-12-22 12:45:09 +01:00
|
|
|
+ (AnonymousTerminator *)cancellerWithCancel:(void (^)(void))terminate {
|
|
|
|
ows_require(terminate != nil);
|
|
|
|
AnonymousTerminator *c = [AnonymousTerminator new];
|
|
|
|
c->_terminateBlock = terminate;
|
2014-05-06 19:41:08 +02:00
|
|
|
return c;
|
|
|
|
}
|
|
|
|
|
2015-12-22 12:45:09 +01:00
|
|
|
- (void)terminate {
|
2014-05-06 19:41:08 +02:00
|
|
|
@synchronized(self) {
|
2015-12-22 12:45:09 +01:00
|
|
|
if (alreadyCalled)
|
|
|
|
return;
|
2014-05-06 19:41:08 +02:00
|
|
|
alreadyCalled = true;
|
|
|
|
}
|
|
|
|
_terminateBlock();
|
|
|
|
}
|
|
|
|
@end
|