* - getting new log entry
* - getting how much (unread) data (in bytes) is ready to read in the storage.
*
- * :----------: :--------: :--------: :--------:
- * | storage | -> | reader | -> | reader | -> | reader | (readers that have not started reading yet)
- * :----------| :--------: :--------: :--------:
- * |
+ * ┌──────────┐ ┌────────┐ ┌────────┐ ┌────────┐
+ * │ storage │ ─> │ reader │ ─> │ reader │ ─> │ reader │ (readers that have not started reading yet)
+ * └────┬─────┘ └────────┘ └────────┘ └────────┘
+ * │
* v
- * -> :-----------| -> :-----------| -> :-----------| -> :-----------| ->
- * ... | log entry | | log entry | | log entry | | log entry | ...
- * <- :-----------: <- :-----------: <- :-----------: <- :-----------: <-
- * ^ | ^ | ^ |
- * | v | v | v
- * | :--------: | :--------: | :--------:
- * \-| reader | \-| reader | \-| reader |
- * | :--------: :--------: | :--------:
- * | | | |
- * | v | v
- * | :--------: | :--------:
- * \-| reader | \-| reader |
- * | :--------: :--------:
- * | | These two readers
- * | v have already read all four logs.
- * | :--------:
- * \-| reader |
- * :--------:
+ * ─> ┌───────────┐ ─> ┌───────────┐ ─> ┌───────────┐ ─> ┌───────────┐ ─>
+ * ... │ log entry │ │ log entry │ │ log entry │ │ log entry │ ...
+ * <─ └──────┬────┘ <─ └──────┬────┘ <─ └───────────┘ <─ └──────┬────┘ <─
+ * ^ │ ^ │ ^ │
+ * │ v │ v │ v
+ * │ ┌────────┐ │ ┌────────┐ │ ┌────────┐
+ * ├─┤ reader │ └─┤ reader │ ├─┤ reader │
+ * │ └────────┘ └────────┘ │ └────────┘
+ * │ │ │ │
+ * │ v │ v
+ * │ ┌────────┐ │ ┌────────┐
+ * ├─┤ reader │ └─┤ reader │
+ * │ └────────┘ └────────┘
+ * │ │ These two readers
+ * │ v have already read all four logs.
+ * │ ┌────────┐
+ * └─┤ reader │
+ * └────────┘
*
*
* When a pushed log passes an entry with active readers, they are notified about the log by a registered