From 601495fa0f3d3793d4ee761d1b86f8435417266c Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Wed, 16 Jan 2013 22:55:33 +0100 Subject: ClientList: convert to a class --- src/ClientList.cxx | 45 +++++++++++++++------------------------------ 1 file changed, 15 insertions(+), 30 deletions(-) (limited to 'src/ClientList.cxx') diff --git a/src/ClientList.cxx b/src/ClientList.cxx index bfa04fea1..37e6f1289 100644 --- a/src/ClientList.cxx +++ b/src/ClientList.cxx @@ -21,51 +21,36 @@ #include "ClientList.hxx" #include "ClientInternal.hxx" -#include #include #include -static std::list clients; -static unsigned num_clients; - -bool -client_list_is_full(void) -{ - return num_clients >= client_max_connections; -} - void -client_list_add(Client *client) +ClientList::Remove(Client &client) { - clients.push_front(client); - ++num_clients; -} + assert(size > 0); + assert(!list.empty()); -void -client_list_foreach(void (*callback)(Client *client, void *ctx), void *ctx) -{ - for (Client *client : clients) - callback(client, ctx); + auto i = std::find(list.begin(), list.end(), &client); + assert(i != list.end()); + list.erase(i); + --size; } void -client_list_remove(Client *client) +ClientList::CloseAll() { - assert(num_clients > 0); - assert(!clients.empty()); + while (!list.empty()) + list.front()->Close(); - auto i = std::find(clients.begin(), clients.end(), client); - assert(i != clients.end()); - clients.erase(i); - --num_clients; + assert(size == 0); } void -client_list_close_all() +ClientList::IdleAdd(unsigned flags) { - while (!clients.empty()) - clients.front()->Close(); + assert(flags != 0); - assert(num_clients == 0); + for (const auto &client : list) + client->IdleAdd(flags); } -- cgit v1.2.3