Ejemplo n.º 1
0
        private Thread BuildListenerThread()
        {
            return(new Thread(() =>
            {
                while (!isDisposing)
                {
                    BasicDeliverEventArgs item = null;

                    // grab the first item where any of the consumer queues has a value

                    var queue = Queues
                                .FirstOrDefault(q => q.TryTake(out item));

                    // if we're dead and we didn't find an item,
                    // it means it's time to pack up and go home

                    if (isDisposing && queue == null)
                    {
                        break;
                    }

                    // if we're not dead and we didn't find an item
                    // lets go around again

                    if (!isDisposing && queue == null)
                    {
                        continue;
                    }

                    if (item == null)
                    {
                        continue;
                    }

                    var delivery = new Delivery(
                        item.DeliveryTag,
                        item.Body,
                        item.RoutingKey,
                        item.Exchange,
                        item.BasicProperties.ContentType,
                        item.BasicProperties.CorrelationId,
                        item.BasicProperties.ReplyTo,
                        item.BasicProperties.Headers);

                    // register the queue as a delivery listener on the delivery so that
                    // we can ack or nack the message depending on whether or not it was processed
                    delivery.RegisterDeliveryListener(queue);

                    // deliver the message to the delivery strategy
                    deliveryStrategy.Deliver(delivery);
                }

                logger.DebugFormat("Subscription thread terminated for: {0}", this);
            }));
        }
Ejemplo n.º 2
0
        private IEnumerable <PredefinedQueue> GetQueues()
        {
            if (Queues != null && Queues.Any())
            {
                return(Queues.Select(item => Enum.Parse(typeof(PredefinedQueue), item)).Cast <PredefinedQueue>().ToList());
            }
            IList <PredefinedQueue> queues = Enum.GetValues(typeof(PredefinedQueue)).Cast <PredefinedQueue>().ToList();

            queues.Remove(PredefinedQueue.UnknownByClient);
            return(queues);
        }
Ejemplo n.º 3
0
        public async Task <Queues> AddItem(Queues item)
        {
            var todaysLastQueueRecord = GetTodaysLastRecord(); //to know the next serial number

            item.SerialNumber = todaysLastQueueRecord == null ? 1 : ++todaysLastQueueRecord.SerialNumber;
            item.ModifiedOn   = item.CreatedOn = DateTime.Now;
            item.ModifiedBy   = item.CreatedBy = "System";
            var result = await _queuesRepository.AddItem(item);

            return(result);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Add a WorkItemQueue to the shift, starting it if the
        /// shift is currently active.
        /// </summary>
        public void AddQueue(WorkItemQueue queue)
        {
            log.Debug("{0} shift adding queue {1}", Name, queue.Name);

            Queues.Add(queue);

            if (IsActive)
            {
                queue.Start();
            }
        }
Ejemplo n.º 5
0
 /// <summary>
 /// Unregisters the given waypoint with this elevator.
 /// </summary>
 /// <param name="waypoint">The waypoint to remove from the elevator.</param>
 public void UnregisterPoint(Waypoint waypoint)
 {
     // Remove the connection
     _connectedPoints.Remove(waypoint);
     _timings.Remove(waypoint);
     foreach (var otherWP in _connectedPoints)
     {
         _timings[otherWP].Remove(waypoint);
     }
     Queues.Remove(waypoint);
 }
Ejemplo n.º 6
0
        private QueueObject GetQueueInternal(string queueName)
        {
            var returnValue = default(QueueObject);

            if (Queues.ContainsKey(queueName))
            {
                returnValue = Queues[queueName];
            }

            return(returnValue);
        }
Ejemplo n.º 7
0
        public async Task <Queues> UpdateItem(Queues item)
        {
            var queue = await _queuesRepository.GetItem(item.QueueId);

            queue.Status     = item.Status;
            queue.ModifiedOn = item.ModifiedOn = DateTime.Now;
            queue.ModifiedBy = item.ModifiedBy = "System";
            await _queuesRepository.UpdateItem(queue);

            return(queue);
        }
Ejemplo n.º 8
0
    protected override void Given()
    {
        _queue = CreateSuccessfulTestQueue(Guid.NewGuid().ToString(),
                                           ct => Task.FromResult(new List <Message> {
            new TestMessage {
                Body = _messageBody
            }
        }.AsEnumerable()));

        Queues.Add(_queue);
    }
        public PriorityTransactionalRouter(string inputQueueFormatName)
        {
            Contract.Requires(inputQueueFormatName != null);
            if (Queues.IsTransactional(inputQueueFormatName) == QueueTransactional.None)
            {
                throw new ArgumentException(inputQueueFormatName + " is not a transactional queue");
            }

            InputQueueFormatName = inputQueueFormatName;
            _router = new SubQueueRouter(inputQueueFormatName, RouterByPriority);
        }
Ejemplo n.º 10
0
        public void EnqueueMultipleValues()
        {
            Queues <int> queue = new Queues <int>();

            queue.Enqueue(10);
            queue.Enqueue(11);
            queue.Enqueue(12);
            Assert.Equal(12, queue.Rear.Value);
            queue.Enqueue(20);
            Assert.Equal(10, queue.Front.Value);
        }
Ejemplo n.º 11
0
        public WorkCenter(ModelElementBase parent, string name, Distribution serviceTimeDistribution, List <LotStep> lotSteps) : base(parent, name)
        {
            LotSteps = lotSteps;
            ServiceTimeDistribution = serviceTimeDistribution;
            LotStepInService        = null;

            foreach (LotStep lotStep in lotSteps)
            {
                Queues.Add(lotStep, new CSSLQueue <Lot>(this, name + "_" + lotStep.Name + "_Queue"));
            }
        }
        protected override void Given()
        {
            _queue = CreateSuccessfulTestQueue(Guid.NewGuid().ToString(), new TestMessage());

            Queues.Add(_queue);

            MessageLock = new FakeMessageLock();

            _handler = new ExactlyOnceSignallingHandler();
            Handler  = _handler;
        }
        public void AddFiveElementsAssertCountFive()
        {
            var queue = new Queues <int>();

            for (int i = 0; i < 5; i++)
            {
                queue.Enqueue(i);
            }

            Assert.AreEqual(5, queue.Count);
        }
Ejemplo n.º 14
0
        public void Dispose()
        {
            if (disposed)
            {
                return;
            }

            Queues.ForEach(Kill);
            FinishedProcesses.ForEach(Kill);
            FibersMap.Clear();
            disposed = true;
        }
Ejemplo n.º 15
0
        public void DequeueOnQueue()
        {
            Queues queue   = new Queues();
            Node   nodeOne = new Node(1);
            Node   nodeTwo = new Node(2);

            queue.Enqueue(nodeOne);
            queue.Enqueue(nodeTwo);
            Assert.True(queue.Dequeue().Value == nodeOne.Value);
            Assert.True(queue.Dequeue().Value == nodeTwo.Value);
            Assert.Throws <NullReferenceException>(() => queue.Dequeue());
        }
Ejemplo n.º 16
0
        public void EnqueueOnQueue()
        {
            Queues queue   = new Queues();
            Node   nodeOne = new Node(1);
            Node   nodeTwo = new Node(2);

            queue.Enqueue(nodeOne);
            queue.Enqueue(nodeTwo);

            Assert.True(queue.front == nodeOne);
            Assert.True(queue.rear == nodeTwo);
        }
Ejemplo n.º 17
0
        public void EmptyQueueThrowsException()
        {
            Queues <int> queue = new Queues <int>();

            var dequeueResult = Assert.Throws <Exception>(() => queue.Dequeue());
            var peekResult    = Assert.Throws <Exception>(() => queue.Peek());

            string expected = ("The queue is empty");

            Assert.Equal(expected, dequeueResult.Message);
            Assert.Equal(expected, peekResult.Message);
        }
Ejemplo n.º 18
0
 /*
  * Method name: enQueue(Q, x)
  * parameters: Queue Q and int x
  * return :    void
  * Algorithm:
  *       1.Q[Q.tail] = x
  *       2.If Q.tail == Q.length
  *       3.    Q.tail = 1
  *       4.else Q.tail = Q.tail + 1
  */
 public void enQueue(Queues q, int x)
 {
     q.Q[q.tail] = x;           //insert the new element at the tail
     if (q.tail == q.Q.Length - 1)
     {
         q.tail = 1;
     }
     else
     {
         q.tail++;
     }
 }
Ejemplo n.º 19
0
        public async Task <IResult> Request(
            [Parameter(ParameterSource.Form)]
            string email
            )
        {
            if (string.IsNullOrWhiteSpace(email))
            {
                return(Status(BadRequest, "Missing email field"));
            }

            // Try to not leak information about existence of email address
            await Task.Delay(TimeSpan.FromMilliseconds(new Random().Next(600, 1500)));

            Database.User user = null;
            var           rr   = await DB.RunInTransactionAsync(db => {
                // TODO: Abort if we have multiple accounts with the same email
                user = db.SelectSingle <Database.User>(x => string.Equals(x.Email, email, StringComparison.OrdinalIgnoreCase));
                if (user != null)
                {
                    var resetreq = db.SelectSingle <Database.ResetPasswordRequest>(x => x.UserID == user.ID);
                    if (resetreq != null)
                    {
                        if ((DateTime.Now - resetreq.Created) > TimeSpan.FromDays(1))
                        {
                            resetreq.Created = DateTime.Now;
                            resetreq.Token   = Services.PasswordPolicy.GenerateActivationCode();
                            db.UpdateItem(resetreq);

                            return(resetreq);
                        }
                    }
                    else
                    {
                        db.InsertItem(resetreq = new Database.ResetPasswordRequest()
                        {
                            UserID = user.ID,
                            Token  = Services.PasswordPolicy.GenerateActivationCode()
                        });

                        return(resetreq);
                    }
                }

                return(null);
            });

            if (user != null && rr != null)
            {
                await Queues.SendPasswordResetEmailAsync(user.Name, user.Email, rr.ID, Services.LocaleHelper.GetBestLocale(Ceen.Context.Request));
            }

            return(OK);
        }
Ejemplo n.º 20
0
        public void GetQueries_QueryByName_ReturnListQueueTransactions()
        {
            //Arrange
            returnList.Clear();
            returnList.Add(new ResponseQueue());
            //Act
            Queues queues = new Queues(apiController.Object);
            var    result = queues.GetQueues(0, "Closed");

            //Assert
            Assert.That(result.Count, Is.EqualTo(1));
        }
        public IActionResult SaveTriage()
        {
            Users user = new Users {
                Id = long.Parse(HttpContext.User.FindFirst(ClaimTypes.Actor).Value)
            };
            Queues queue = IOutpatientService.GetQueue(TriageModel.Queue.Id);

            Triage triage = TriageModel.Triage;

            triage.Visit = queue.Visit;
            triage.Queue = queue;

            //Test::Mobility/Trauma/Avpu && convert to int
            if (string.IsNullOrEmpty(triage.Mobility.Value))
            {
                triage.Mobility.Value = "0";
            }
            if (string.IsNullOrEmpty(triage.Trauma.Value))
            {
                triage.Trauma.Value = "0";
            }
            if (string.IsNullOrEmpty(triage.AVPU.Value))
            {
                triage.AVPU.Value = "0";
            }

            //Sanitize TextAreas
            triage.Situation.Value      = triage.Situation.Value.ToValidString();
            triage.Background.Value     = triage.Background.Value.ToValidString();
            triage.Assessment.Value     = triage.Assessment.Value.ToValidString();
            triage.Recommendation.Value = triage.Recommendation.Value.ToValidString();
            triage.Notes = triage.Notes.ToValidString();

            //Save Triage
            triage.CreatedBy = user;
            triage.Save();

            if (!queue.StartOn.HasValue)
            {
                queue.SeenBy = user;
                queue.StartEncounter();
            }
            queue.CompleteEncounter();

            var dest = TriageModel.SendTo;

            dest.Visit     = queue.Visit;
            dest.CreatedBy = user;
            dest.Save();

            return(LocalRedirect("/outpatient/triage.queue" + (queue.CreatedOn.Date.Equals(DateTime.Now.Date) ? "" : "?date=" + TriageModel.Queue.Date)));
        }
Ejemplo n.º 22
0
 /// <summary>
 /// 互换位置
 /// </summary>
 /// <param name="index"></param>
 /// <param name="target"></param>
 public void Move(int index, int target)
 {
     if (index > -1 && index != target)
     {
         var item = Queues[index];
         Queues.RemoveAt(index);
         Queues.InsertAt(target, new Album[] { item });//插入到指定位置
         OnMergeQueueChanged(new MergeQueueEventArgs()
         {
             Mode = QueueChangeMode.Move
         });//触发序列更改事件
     }
 }
Ejemplo n.º 23
0
 /// <summary>
 /// 加入拼合
 /// </summary>
 /// <param name="array"></param>
 public void Add(params Album[] array)
 {
     for (var i = 0; i < array.Length; i++)
     {
         array[i] = array[i].Clone();
     }
     Queues.AddRange(array);
     OnMergeQueueChanged(new MergeQueueEventArgs()
     {
         Mode = QueueChangeMode.Add,
         Tag  = array
     });
 }
Ejemplo n.º 24
0
        public void Setup()
        {
            dataFN    = Queues.TryCreate(@".\private$\server.data", QueueTransactional.None);
            requestFN = Queues.TryCreate(@".\private$\server.control", QueueTransactional.None);
            replyFN   = Queues.TryCreate(@".\private$\server.client1", QueueTransactional.None);

            Queues.Purge(dataFN);
            Queues.Purge(requestFN);
            Queues.Purge(replyFN);

            server = new LabelSubscriptionServer(requestFN, dataFN);
            server.StartAsync().Wait();
        }
Ejemplo n.º 25
0
        private Queue GetQueue(string name)
        {
            if (!Queues.Any(x => x.Name == name))
            {
                var result = new Queue(name);

                Queues.Add(result);

                return(result);
            }

            return(Queues.Single(x => x.Name == name));
        }
        protected override void Given()
        {
            var queue = CreateSuccessfulTestQueue(Guid.NewGuid().ToString(),
                                                  () => new List <Message> {
                new TestMessage {
                    Body = _messageBody
                }
            });

            _sqsClient = queue.FakeClient;

            Queues.Add(queue);
        }
Ejemplo n.º 27
0
        public void CanDequeueOutOfQueue()
        {
            Queues <int> queue = new Queues <int>();

            queue.Enqueue(10);
            queue.Enqueue(11);
            queue.Enqueue(12);

            Node <int> returned = queue.Dequeue();
            int        expected = 10;

            Assert.Equal(expected, returned.Value);
        }
Ejemplo n.º 28
0
        public void Setup()
        {
            requestQueueFormatName = Queues.TryCreate(requestQueuePath, QueueTransactional.None);
            replyQueueFormatName   = Queues.TryCreate(replyQueuePath, QueueTransactional.None);
            adminQueueFormatName   = Queues.TryCreate(adminQueuePath, QueueTransactional.None);

            Queues.Purge(requestQueueFormatName);;
            Queues.Purge(replyQueueFormatName);;
            Queues.Purge(adminQueueFormatName);;

            postman = new Postman(adminQueueFormatName);
            postman.StartAsync();
        }
Ejemplo n.º 29
0
        public void PeekIntoQueueAndSeeExpectedValue()
        {
            Queues <int> queue = new Queues <int>();

            queue.Enqueue(10);
            queue.Enqueue(11);
            queue.Enqueue(12);

            int returned = queue.Peek();
            int expected = 10;

            Assert.Equal(expected, returned);
        }
Ejemplo n.º 30
0
        private void AddQueueAction()
        {
            Queue newAccount = new Queue
            {
                Id            = Guid.NewGuid(),
                Name          = QueueName,
                IsStartLoadAt = false,
                IsStopLoadAt  = false,
            };

            Queues.Add(newAccount);
            dataStorage.Save(Queues);
        }
Ejemplo n.º 31
0
        /// <summary>
        /// Add a message to the given queue. 
        /// </summary>
        /// <param name="queue"></param>
        /// <param name="message"></param>
        public void AddMessage(Queues queue, object message)
        {
            //TODO: stubbed method. 
            var js = new JsonSerializer(); 
            //serialise object. 
            var smessage = JsonConvert.SerializeObject(message);
            var data = Encoding.UTF8.GetBytes(smessage);

            //add to queue
            //check queue exists
            Channel.QueueDeclare(queue.ToString(), false, false, false, null); 
            //publish
            Channel.BasicPublish("", queue.ToString(), null, data);


        }
Ejemplo n.º 32
0
        private void Receive(Queues queuesToListenOn)
        {
            //TODO: When we recieve a message we need to subscibe to notifications from the queue again, this method lets us subscribe to one or both
            if (isRunning)
            {
                if (queuesToListenOn.HasFlag(Queues.Input))
                {
                    inputChannel.BeginReceive(new TimeSpan(0, 0, 0, ConfigurationSettings.PollingTimeout));
                }

                if (queuesToListenOn.HasFlag(Queues.Control))
                {
                    //TODO: subscribe to messages on the control queue
                }
            }
        }
Ejemplo n.º 33
0
        private void btnProcTestQueue_Click(object sender, EventArgs e)
        {
            //disable the button 
            btnProcTestQueue.Enabled = false;

            //init the queue
            var queue = new Queues(Properties.Settings.Default.AzureConnection, "testqueue");

            //build a object to be serialized and sent to the queue
            var obj = new QueueObject() {PartitionKey = tbQPartitionKey.Text, RowKey = tbQRowKey.Text };

            //add it to the queue
            queue.Insert(JsonConvert.SerializeObject(obj), 20);

            //lets go ahead and start a task to wait for the queue and process it
            var taskList = new List<Task>();
            
            var task = StartThread();
            taskList.Add(task);

            var context = TaskScheduler.FromCurrentSynchronizationContext();
            Task.Factory.ContinueWhenAll(taskList.ToArray(), ThreadsComplete, CancellationToken.None, TaskContinuationOptions.ExecuteSynchronously, context);
        }
Ejemplo n.º 34
0
 /// <summary>
 /// Discards message to the Discard queue. Optionally acknowledges message too. Defaults to acknoweldging 
 /// </summary>
 /// <param name="queue"></param>
 /// <param name="message"></param>
 /// <param name="acknowledge"></param>
 public void DiscardMessage(Queues queue, BasicDeliverEventArgs message, bool acknowledge = true)
 {
     if(acknowledge) Acknowledge(message.DeliveryTag);
     AddMessage(Queues.Discards, new Discard { Queue = queue, Message = Encoding.UTF8.GetString(message.Body) });
 }
Ejemplo n.º 35
0
 /// <summary>
 /// Get a consumer for a queue. Optional acknowedge required. 
 /// </summary>
 /// <param name="queue"></param>
 /// <param name="noAck">Defaults to false - i.e you need to ack. </param>
 /// <returns></returns>
 public QueueingBasicConsumer GetBasicConsumer(Queues queue, bool noAck = false)
 {
     var ret = new QueueingBasicConsumer(Channel);
     Channel.BasicConsume(queue.ToString(), noAck, ret);
     return ret; 
 }
Ejemplo n.º 36
0
 public Subscription GetSubscription(Queues queue)
 {
     return new Subscription(Channel, queue.ToString());
 }
Ejemplo n.º 37
0
 public void DiscardMessage(Queues queue, string message)
 {
     AddMessage(Queues.Discards, new Discard{Queue = queue, Message = message});
 }
Ejemplo n.º 38
0
        private void RunProcess(IProgress<List<string>> progress)
        {
            //init the queue
            var queue = new Queues(Properties.Settings.Default.AzureConnection, "testqueue");

            var updateList = new List<string>();
            var done = false;
            var ctr = 20;

            while (!done)
            {
                //check queue
                updateList.Add("Checking for queue");
                progress.Report(updateList);
                
                var queueObj = queue.GetNextMessage(TimeSpan.FromSeconds(20));
                
                //process if there was one found
                if (queueObj != null)
                {
                    updateList.Add("Queue item found: " + queueObj.AsString);
                    progress.Report(updateList);

                    updateList.Add("Process");
                    progress.Report(updateList);

                    updateList.Add("De-queue");
                    progress.Report(updateList);

                    queue.DeQueue(queueObj);
                    
                    updateList.Add("Queue finished");
                    progress.Report(updateList);

                    done = true;
                }

                if (!done)
                {
                    Thread.Sleep(5000);
                    ctr--;
                    if (ctr == 0)
                        done = true;
                }
            }

            updateList.Add("done");
            progress.Report(updateList);
        }
Ejemplo n.º 39
0
        private void Receive(Queues queuesToListenOn)
        {
            if (isRunning)
            {
                if (queuesToListenOn.HasFlag(Queues.Input))
                {
                    inputChannel.BeginReceive(new TimeSpan(0, 0, 0, ConfigurationSettings.PollingTimeout));
                }

                if (queuesToListenOn.HasFlag(Queues.Control))
                {
                    controlChannel.BeginReceive(new TimeSpan(0, 0, 0, ConfigurationSettings.PollingTimeout));
                }
            }
        }