diff --git a/.gitignore b/.gitignore index 40f4a4f..1bb54a9 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ build/ *.mode2v3 xcuserdata +Project/DerivedData 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..47cf6da 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; @@ -233,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"}]; } /** 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];