diff --git a/.phpdoc/guide/overview/middlewarequeue.rst b/.phpdoc/guide/overview/middlewarequeue.rst
index 2d95d87..d652228 100644
--- a/.phpdoc/guide/overview/middlewarequeue.rst
+++ b/.phpdoc/guide/overview/middlewarequeue.rst
@@ -3,3 +3,65 @@
MiddlewareQueue
###############
+.. sidebar:: Table of Contents
+ .. contents::
+
+The `MiddlewareQueue` manages the middlewares involved in processing a server request. It makes sure they are called in
+first-in, first-out (FIFO) order, i.e. the same order they were added to the queue. It also ensures all middlewares are
+implementing the `PSR-15: HTTP Server Request Handlers
The MiddlewareQueue
+ manages the middlewares involved in processing a server request. It makes sure they are called in
+first-in, first-out (FIFO) order, i.e. the same order they were added to the queue. It also ensures all middlewares are
+implementing the PSR-15: HTTP Server Request Handlers specification for the
+Psr\Http\Server\MiddlewareInterface.
When instantiating a MiddlewareQueue
+ it defaults to being empty. But you can optionally pass an iterable set of
+middlewares to the constructor which are then put into the queue. To demonstrate, the following examples both have
+exactly the same result.
++ + +Examples:
++use OCC\PSR15\MiddlewareQueue; + +$middlewares = [ + new MiddlewareOne(), + new MiddlewareTwo() +]; + +$queue = new MiddlewareQueue($middlewares);
+use OCC\PSR15\MiddlewareQueue; + +$queue = new MiddlewareQueue(); + +$queue->enqueue(new MiddlewareOne()); +$queue->enqueue(new MiddlewareTwo());
The MiddlewareQueue
+ is based on a
+OCC\Basics\DataStructures\StrictQueue.
The MiddlewareQueue
+ provides a set of API methods, with MiddlewareQueue::enqueue()
+ and MiddlewareQueue::dequeue()
+
+being the most relevant ones. The former will add a new item at the end of the queue while the latter removes and
+returns the first item from the queue.
For a complete API documentation have a look at the +StrictQueue.
+ +Invoking MiddlewareQueue::enqueue()
+ will add a middleware at the end of the queue. The only argument must be a
+middleware object implementing the Psr\Http\Server\MiddlewareInterface
+. If the given argument does not meet the
+criterion an OCC\Basics\DataStructures\Exceptions\InvalidDataTypeException
+ is thrown.
Have a look at the AbstractMiddleware for an easy way to create your own middlewares!
+ +Calling MiddlewareQueue::dequeue()
+ will return the first middleware from the queue, i.e. the oldest one on the queue.
+Also, this middleware is removed from the queue.
If the queue is empty a RuntimeException
+ is thrown, so make sure to check the queue's length (e.g. with count()
+)
+before trying to dequeue an item!