output/httpd: wrap the std::list in std::queue

This commit is contained in:
Max Kellermann 2014-01-04 17:07:24 +01:00
parent f2ad9f6fad
commit 8e4efd071e
2 changed files with 16 additions and 6 deletions

View File

@ -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();

View File

@ -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.