mirror of https://github.com/oxen-io/session-ios
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
777 B
Objective-C
43 lines
777 B
Objective-C
//
|
|
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
|
|
//
|
|
|
|
#import "Queue.h"
|
|
|
|
@implementation Queue {
|
|
@private
|
|
NSMutableArray *items;
|
|
}
|
|
- (id)init {
|
|
if (self = [super init]) {
|
|
self->items = [NSMutableArray array];
|
|
}
|
|
return self;
|
|
}
|
|
- (void)enqueue:(id)item {
|
|
[items addObject:item];
|
|
}
|
|
- (id)tryDequeue {
|
|
if (self.count == 0)
|
|
return nil;
|
|
return [self dequeue];
|
|
}
|
|
- (id)dequeue {
|
|
requireState(self.count > 0);
|
|
id result = items[0];
|
|
[items removeObjectAtIndex:0];
|
|
return result;
|
|
}
|
|
- (id)peek {
|
|
requireState(self.count > 0);
|
|
return items[0];
|
|
}
|
|
- (id)peekAt:(NSUInteger)offset {
|
|
ows_require(offset < self.count);
|
|
return items[offset];
|
|
}
|
|
- (NSUInteger)count {
|
|
return items.count;
|
|
}
|
|
@end
|