Skip to content

Commit

Permalink
default cancelable subscribables to use a replay subject but allow ov…
Browse files Browse the repository at this point in the history
…erriding
  • Loading branch information
joshaber committed Jul 20, 2012
1 parent aeb1b3f commit 7ce6ace
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@

@interface RACCancelableSubscribable ()

// Defaults to using a RACReplaySubject.
+ (RACCancelableSubscribable *)cancelableSubscribableSourceSubscribable:(id<RACSubscribable>)subscribable withBlock:(void (^)(void))block;
+ (RACCancelableSubscribable *)cancelableSubscribableSourceSubscribable:(id<RACSubscribable>)sourceSubscribable subject:(RACSubject *)subject withBlock:(void (^)(void))block;

@end
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
#import "RACCancelableSubscribable.h"
#import "RACSubscribable+Private.h"
#import "RACConnectableSubscribable+Private.h"
#import "RACSubject.h"
#import "RACReplaySubject.h"

@interface RACCancelableSubscribable ()
@property (nonatomic, copy) void (^cancelBlock)(void);
Expand All @@ -36,7 +36,11 @@ - (void)tearDown {
@synthesize cancelBlock;

+ (RACCancelableSubscribable *)cancelableSubscribableSourceSubscribable:(id<RACSubscribable>)sourceSubscribable withBlock:(void (^)(void))block {
RACCancelableSubscribable *subscribable = [self connectableSubscribableWithSourceSubscribable:sourceSubscribable subject:[RACSubject subject]];
return [self cancelableSubscribableSourceSubscribable:sourceSubscribable subject:[RACReplaySubject subject] withBlock:block];
}

+ (RACCancelableSubscribable *)cancelableSubscribableSourceSubscribable:(id<RACSubscribable>)sourceSubscribable subject:(RACSubject *)subject withBlock:(void (^)(void))block {
RACCancelableSubscribable *subscribable = [self connectableSubscribableWithSourceSubscribable:sourceSubscribable subject:subject];
[subscribable connect];
subscribable.cancelBlock = block;
return subscribable;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,10 @@ typedef NSInteger RACSubscribableError;
// Resubscribes to the receiving subscribable if an error occurs.
- (RACSubscribable *)retry;

// Creates a cancelable subscribable multicasted to the given subject with the
// given cancelation block.
- (RACCancelableSubscribable *)asCancelableToSubject:(RACSubject *)subject withBlock:(void (^)(void))block;

// Creates a cancelable subscribable with the given cancelation block.
- (RACCancelableSubscribable *)asCancelableWithBlock:(void (^)(void))block;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1092,6 +1092,10 @@ - (RACSubscribable *)retry {
return [self retry:0];
}

- (RACCancelableSubscribable *)asCancelableToSubject:(RACSubject *)subject withBlock:(void (^)(void))block {
return [RACCancelableSubscribable cancelableSubscribableSourceSubscribable:self subject:subject withBlock:block];
}

- (RACCancelableSubscribable *)asCancelableWithBlock:(void (^)(void))block {
return [RACCancelableSubscribable cancelableSubscribableSourceSubscribable:self withBlock:block];
}
Expand Down

0 comments on commit 7ce6ace

Please sign in to comment.