Client: use TimeoutMonitor to track connection timeout

Don't use a global loop over the whole client list.
This commit is contained in:
Max Kellermann
2013-01-16 21:39:40 +01:00
parent cab84af72e
commit b0bbb8b693
6 changed files with 22 additions and 78 deletions

View File

@@ -49,20 +49,16 @@ static const char GREETING[] = "OK MPD " PROTOCOL_VERSION "\n";
Client::Client(EventLoop &_loop, Partition &_partition,
int _fd, int _uid, int _num)
:BufferedSocket(_fd, _loop, 16384, client_max_output_buffer_size),
TimeoutMonitor(_loop),
partition(_partition),
playlist(partition.playlist), player_control(&partition.pc),
permission(getDefaultPermissions()),
uid(_uid),
last_activity(g_timer_new()),
num(_num),
idle_waiting(false), idle_flags(0),
num_subscriptions(0)
{
}
Client::~Client()
{
g_timer_destroy(last_activity);
TimeoutMonitor::ScheduleSeconds(client_timeout);
}
void