Commit Graph

2 Commits

Author SHA1 Message Date
Abtin Keshavarzian d0cf21e3ba PriorityQueue and MessagePool::Iterator and their unit-test (#1096)
This commit contains the following:

- It adds methods to `Message` to assign a priority level to messages.
  Currently there are four priority levels: High, Medium, Low, VeryLow
  but this is easily changeable.

- It introduces a new class `PriorityQueue` which implements a FIFO queue
  for storing messages based on their priority level in addition to oder
  in which they are added.
  If the priority level of an already queued message in a `PriorityQueue`
  is changed, the associated queue will automatically move the message
  within the queue based on its new priority level.
  Internally the implementation uses a circular doubly linked-list with
  an array of tail pointers associated with different priority levels.

- It adds new methods and an `Iterator` class  in `MessagePool` to access
  the priority queue where all allocated and queued messages from this
  pool are stored.  The `Iterator` class allows bi-directional iteration
  through the list (from highest priority to lowest or reverse).

- This commit also contain detailed unit-test for all the newly added
  features/methods.
2016-12-21 13:50:57 -08:00
Abtin Keshavarzian 9d3bd7802b Update the MessageQueue and add unit test for it. (#1089)
This commit makes the following changes:

- It adds a unit test for testing different `MessageQueue` operations.

- It modifies how the `MessageQueue` determines the lists (the `kListAll`
  is maintained by the message pool and the `kListInterface` is accessed
  from the `MessageQueue` associated with the list).

- It modifies the underlying list implementation to use a circular doubly
  linked-list.
2016-12-20 08:46:58 -08:00