From ca108cf2cffa081decab9c16c69beec3c0fe783a Mon Sep 17 00:00:00 2001 From: Cristian Bica Date: Wed, 14 Aug 2013 12:00:19 +0300 Subject: [PATCH 1/3] Added DerivedData to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 40f4a4f..1bb54a9 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ build/ *.mode2v3 xcuserdata +Project/DerivedData From 094e165b792376698f0bd804646f4d0a06d3edee Mon Sep 17 00:00:00 2001 From: Cristian Bica Date: Wed, 14 Aug 2013 12:22:38 +0300 Subject: [PATCH 2/3] Added support for multiple named queues --- EDQueue/EDQueue.h | 3 +++ EDQueue/EDQueue.m | 13 +++++++++++-- EDQueue/EDQueueStorageEngine.h | 2 ++ EDQueue/EDQueueStorageEngine.m | 9 +++++++-- 4 files changed, 23 insertions(+), 4 deletions(-) diff --git a/EDQueue/EDQueue.h b/EDQueue/EDQueue.h index 3f8ca8d..ad4430b 100755 --- a/EDQueue/EDQueue.h +++ b/EDQueue/EDQueue.h @@ -39,9 +39,12 @@ UIKIT_EXTERN NSString *const EDQueueDidDrain; @property (weak) id delegate; @property (readonly) Boolean isRunning; @property (readonly) Boolean isActive; +@property (readonly) NSString *name; @property NSUInteger retryLimit; + (EDQueue *)sharedInstance; ++ (EDQueue *)queueNamed:(NSString *)name; + - (void)enqueueWithData:(id)data forTask:(NSString *)task; - (void)start; diff --git a/EDQueue/EDQueue.m b/EDQueue/EDQueue.m index 9797bb5..9f83802 100755 --- a/EDQueue/EDQueue.m +++ b/EDQueue/EDQueue.m @@ -45,11 +45,20 @@ + (EDQueue *)sharedInstance }); } -- (id)init ++ (EDQueue *)queueNamed:(NSString *)name { + return [[self alloc] initWithName:name]; +} + +- (id)init { + return [self initWithName:nil]; +} + +- (id)initWithName:(NSString *)name { self = [super init]; if (self) { - _engine = [[EDQueueStorageEngine alloc] init]; + _name = name; + _engine = [[EDQueueStorageEngine alloc] initWithName:self.name]; _isRunning = false; _isActive = false; _retryLimit = 4; diff --git a/EDQueue/EDQueueStorageEngine.h b/EDQueue/EDQueueStorageEngine.h index d0b33c2..7827aed 100755 --- a/EDQueue/EDQueueStorageEngine.h +++ b/EDQueue/EDQueueStorageEngine.h @@ -16,7 +16,9 @@ @interface EDQueueStorageEngine : NSObject @property (retain) FMDatabaseQueue *queue; +@property (readonly) NSString *name; +- (EDQueueStorageEngine *)initWithName:(NSString *)name; - (void)createJob:(id)data forTask:(id)task; - (Boolean)jobExistsForTask:(id)task; - (void)incrementAttemptForJob:(NSNumber *)jid; diff --git a/EDQueue/EDQueueStorageEngine.m b/EDQueue/EDQueueStorageEngine.m index a2dc3e1..f0afb8f 100755 --- a/EDQueue/EDQueueStorageEngine.m +++ b/EDQueue/EDQueueStorageEngine.m @@ -12,14 +12,19 @@ @implementation EDQueueStorageEngine #pragma mark - Init -- (id)init +- (id)init { + return [self initWithName:nil]; +} + +- (EDQueueStorageEngine *)initWithName:(NSString *)name { self = [super init]; if (self) { // Database path + _name = [NSString stringWithFormat:@"edqueue_%@.db", name?:@"0.5.0d"]; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES); NSString *documentsDirectory = [paths objectAtIndex:0]; - NSString *path = [documentsDirectory stringByAppendingPathComponent:@"edqueue_0.5.0d.db"]; + NSString *path = [documentsDirectory stringByAppendingPathComponent:self.name]; // Allocate the queue _queue = [[FMDatabaseQueue alloc] initWithPath:path]; From 23f26783ed04f3cad5ca80548166fa66d31b0d85 Mon Sep 17 00:00:00 2001 From: Cristian Bica Date: Wed, 14 Aug 2013 12:23:44 +0300 Subject: [PATCH 3/3] When posting notifications include in userInfo the queue name --- EDQueue/EDQueue.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EDQueue/EDQueue.m b/EDQueue/EDQueue.m index 9f83802..47cf6da 100755 --- a/EDQueue/EDQueue.m +++ b/EDQueue/EDQueue.m @@ -242,7 +242,7 @@ - (void)processJob:(NSDictionary*)job withResult:(EDQueueResult)result */ - (void)postNotification:(NSDictionary *)object { - [[NSNotificationCenter defaultCenter] postNotificationName:[object objectForKey:@"name"] object:[object objectForKey:@"data"]]; + [[NSNotificationCenter defaultCenter] postNotificationName:[object objectForKey:@"name"] object:[object objectForKey:@"data"] userInfo:@{@"queue" : self.name?:@"default"}]; } /**