MPD: event/PollGroupPoll.hxx Source File

MPD 0.20.18

PollGroupPoll.hxx
Go to the documentation of this file.
1 /*
2 * Copyright 2003-2017 The Music Player Daemon Project
3 * http://www.musicpd.org
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 */
19
20 #ifndef MPD_EVENT_POLLGROUP_POLL_HXX
21 #define MPD_EVENT_POLLGROUP_POLL_HXX
22
23 #include "check.h"
24 #include "PollResultGeneric.hxx"
25
26 #include <vector>
27 #include <unordered_map>
28
29 #include <stddef.h>
30 #include <sys/poll.h>
31
32 class PollGroupPoll
33 {
34 struct Item
35 {
36 size_t index;
37 void *obj;
38 };
39
40 std::vector<pollfd> poll_events;
41 std::unordered_map<int, Item> items;
42
43 PollGroupPoll(PollGroupPoll &) = delete;
44 PollGroupPoll &operator=(PollGroupPoll &) = delete;
45 public:
46 static constexpr unsigned READ = POLLIN;
47 static constexpr unsigned WRITE = POLLOUT;
48 static constexpr unsigned ERROR = POLLERR;
49 static constexpr unsigned HANGUP = POLLHUP;
50
51 PollGroupPoll();
52 ~PollGroupPoll();
53
54 void ReadEvents(PollResultGeneric &result, int timeout_ms);
55 bool Add(int fd, unsigned events, void *obj);
56 bool Modify(int fd, unsigned events, void *obj);
57 bool Remove(int fd);
58 bool Abandon(int fd) {
59 return Remove(fd);
60 }
61 };
62
63 #endif
check.h
PollGroupPoll::Modify
bool Modify(int fd, unsigned events, void *obj)
PollGroupPoll::Abandon
bool Abandon(int fd)
Definition: PollGroupPoll.hxx:58
PollGroupPoll::Remove
bool Remove(int fd)
PollGroupPoll::READ
static constexpr unsigned READ
Definition: PollGroupPoll.hxx:46
PollGroupPoll::ReadEvents
void ReadEvents(PollResultGeneric &result, int timeout_ms)
PollResultGeneric.hxx
PollGroupPoll::WRITE
static constexpr unsigned WRITE
Definition: PollGroupPoll.hxx:47
PollResultGeneric
Definition: PollResultGeneric.hxx:27
PollGroupPoll
Definition: PollGroupPoll.hxx:32
PollGroupPoll::~PollGroupPoll
~PollGroupPoll()
PollGroupPoll::ERROR
static constexpr unsigned ERROR
Definition: PollGroupPoll.hxx:48
PollGroupPoll::PollGroupPoll
PollGroupPoll()
PollGroupPoll::HANGUP
static constexpr unsigned HANGUP
Definition: PollGroupPoll.hxx:49
PollGroupPoll::Add
bool Add(int fd, unsigned events, void *obj)