2 * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
4 * Contact: Piotr Bartosiewicz <p.bartosiewi@partner.samsung.com>
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License
21 * @author Piotr Bartosiewicz (p.bartosiewi@partner.samsung.com)
22 * @brief C++ epoll wrapper
25 #ifndef COMMON_EPOLL_EVENT_POLL_HPP
26 #define COMMON_EPOLL_EVENT_POLL_HPP
28 #include "epoll/events.hpp"
32 #include <unordered_map>
40 typedef std::function<bool(int fd, Events events)> Callback;
45 int getPollFD() const;
47 void addFD(const int fd, const Events events, Callback&& callback);
48 void removeFD(const int fd);
50 bool dispatchIteration(const int timeoutMs);
54 typedef std::recursive_mutex Mutex;
58 std::unordered_map<int, std::shared_ptr<Callback>> mCallbacks;
60 bool addFDInternal(const int fd, const Events events);
61 void removeFDInternal(const int fd);
68 #endif // COMMON_EPOLL_EVENT_POLL_HPP