diff --git a/SSignalKit/SQueue.h b/SSignalKit/SQueue.h index 85ac709ba6..011aa333a1 100644 --- a/SSignalKit/SQueue.h +++ b/SSignalKit/SQueue.h @@ -6,6 +6,8 @@ + (SQueue *)concurrentDefaultQueue; + (SQueue *)concurrentBackgroundQueue; ++ (SQueue *)wrapConcurrentNativeQueue:(dispatch_queue_t)nativeQueue; + - (void)dispatch:(dispatch_block_t)block; - (dispatch_queue_t)_dispatch_queue; diff --git a/SSignalKit/SQueue.m b/SSignalKit/SQueue.m index 80e24dd5b5..91a7336c89 100644 --- a/SSignalKit/SQueue.m +++ b/SSignalKit/SQueue.m @@ -50,6 +50,11 @@ static const void *SQueueSpecificKey = &SQueueSpecificKey; return queue; } ++ (SQueue *)wrapConcurrentNativeQueue:(dispatch_queue_t)nativeQueue +{ + return [[SQueue alloc] initWithNativeQueue:nativeQueue queueSpecific:NULL]; +} + - (instancetype)init { dispatch_queue_t queue = dispatch_queue_create(NULL, NULL); diff --git a/SSignalKit/SSignal+Catch.m b/SSignalKit/SSignal+Catch.m index 6a43a0cac8..61b97884d9 100644 --- a/SSignalKit/SSignal+Catch.m +++ b/SSignalKit/SSignal+Catch.m @@ -10,15 +10,15 @@ { return [[SSignal alloc] initWithGenerator:^id (SSubscriber *subscriber) { - SMetaDisposable *disposable = [[SMetaDisposable alloc] init]; + SDisposableSet *disposable = [[SDisposableSet alloc] init]; - [disposable setDisposable:[self startWithNext:^(id next) + [disposable add:[self startWithNext:^(id next) { [subscriber putNext:next]; } error:^(id error) { SSignal *signal = f(error); - [disposable setDisposable:[signal startWithNext:^(id next) + [disposable add:[signal startWithNext:^(id next) { [subscriber putNext:next]; } error:^(id error) diff --git a/SSignalKit/SSignal+Single.m b/SSignalKit/SSignal+Single.m index 82c5a1570a..6da5943459 100644 --- a/SSignalKit/SSignal+Single.m +++ b/SSignalKit/SSignal+Single.m @@ -7,6 +7,7 @@ return [[SSignal alloc] initWithGenerator:^id (SSubscriber *subscriber) { [subscriber putNext:next]; + [subscriber putCompletion]; return nil; }]; }