diff options
author | Max Kellermann <max@duempel.org> | 2014-01-04 17:07:24 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2014-01-04 17:12:59 +0100 |
commit | 8e4efd071e8eef033d0a68f6cf60f3910599a1a9 (patch) | |
tree | 3cd26c8cc463593633b7dac3339095d5e08e4e55 | |
parent | f2ad9f6fadb9d070863a8a5c76b85c884943502a (diff) | |
download | mpd-8e4efd071e8eef033d0a68f6cf60f3910599a1a9.tar.gz mpd-8e4efd071e8eef033d0a68f6cf60f3910599a1a9.tar.xz mpd-8e4efd071e8eef033d0a68f6cf60f3910599a1a9.zip |
output/httpd: wrap the std::list in std::queue
-rw-r--r-- | src/output/HttpdClient.cxx | 19 | ||||
-rw-r--r-- | src/output/HttpdClient.hxx | 3 |
2 files changed, 16 insertions, 6 deletions
diff --git a/src/output/HttpdClient.cxx b/src/output/HttpdClient.cxx index 121f36e41..d16f78942 100644 --- a/src/output/HttpdClient.cxx +++ b/src/output/HttpdClient.cxx @@ -212,10 +212,19 @@ HttpdClient::ClearQueue() { assert(state == RESPONSE); - for (auto page : pages) + while (!pages.empty()) { + Page *page = pages.front(); + pages.pop(); + +#ifndef NDEBUG + assert(queue_size >= page->size); + queue_size -= page->size; +#endif + page->Unref(); - pages.clear(); - queue_size = 0; + } + + assert(queue_size == 0); } void @@ -273,7 +282,7 @@ HttpdClient::TryWrite() } current_page = pages.front(); - pages.pop_front(); + pages.pop(); current_position = 0; assert(queue_size >= current_page->size); @@ -379,7 +388,7 @@ HttpdClient::PushPage(Page *page) return; page->Ref(); - pages.push_back(page); + pages.push(page); queue_size += page->size; ScheduleWrite(); diff --git a/src/output/HttpdClient.hxx b/src/output/HttpdClient.hxx index 7b83bca33..72a5224ca 100644 --- a/src/output/HttpdClient.hxx +++ b/src/output/HttpdClient.hxx @@ -23,6 +23,7 @@ #include "event/BufferedSocket.hxx" #include "Compiler.h" +#include <queue> #include <list> #include <stddef.h> @@ -53,7 +54,7 @@ class HttpdClient final : BufferedSocket { /** * A queue of #Page objects to be sent to the client. */ - std::list<Page *> pages; + std::queue<Page *, std::list<Page *>> pages; /** * The sum of all page sizes in #pages. |