angular.module('fbMocks') .factory('queueService', [function ( ): fb.IMockQueueService { 'use strict'; var queues = {}; var getQueue = function (queueId: string): fb.IQueue { if (queues[queueId] !== undefined) { return queues[queueId]; } else { var queue: fb.IQueue = new Queue(queueId); queues[queueId] = queue; return queue; } } function Queue(queueName: string): void { var queue = []; var isProcessing = false; /* Enqueuear något på kön */ this.enqueue = function (item) { var res = _.findWhere(queue, { UniqueId: item.UniqueId }); if (typeof res === 'undefined') { queue.push(item); } } this.id = queueName; /* Dequeuear ett element på kön */ this.dequeue = function () { if (queue.length === 0) { return undefined; } var item = queue[0]; queue.splice(0, 1); return item; } this.remove = function (id) { for (var i = 0; i < queue.length; i++) { if (queue[i].UniqueId === id) { queue.splice(i, 1); return; } } } this.exists = function(id) { var res = _.findWhere(queue, { UniqueId: id }); return (typeof res !== 'undefined'); } this.get = function (id) { var res = _.findWhere(queue, { UniqueId: id }); return (typeof res !== 'undefined') ? res : null; } this.queue = queue; } return { get: getQueue }; }]);