aboutsummaryrefslogtreecommitdiffstats
path: root/src/output/HttpdClient.cxx
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2014-01-04 17:07:24 +0100
committerMax Kellermann <max@duempel.org>2014-01-04 17:12:59 +0100
commit8e4efd071e8eef033d0a68f6cf60f3910599a1a9 (patch)
tree3cd26c8cc463593633b7dac3339095d5e08e4e55 /src/output/HttpdClient.cxx
parentf2ad9f6fadb9d070863a8a5c76b85c884943502a (diff)
downloadmpd-8e4efd071e8eef033d0a68f6cf60f3910599a1a9.tar.gz
mpd-8e4efd071e8eef033d0a68f6cf60f3910599a1a9.tar.xz
mpd-8e4efd071e8eef033d0a68f6cf60f3910599a1a9.zip
output/httpd: wrap the std::list in std::queue
Diffstat (limited to 'src/output/HttpdClient.cxx')
-rw-r--r--src/output/HttpdClient.cxx19
1 files changed, 14 insertions, 5 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();