nidas  v1.2-1520
Polled.h
Go to the documentation of this file.
1 // -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 4; tab-width: 4; -*-
2 // vim: set shiftwidth=4 softtabstop=4 expandtab:
3 /*
4  ********************************************************************
5  ** NIDAS: NCAR In-situ Data Acquistion Software
6  **
7  ** 2013, Copyright University Corporation for Atmospheric Research
8  **
9  ** This program is free software; you can redistribute it and/or modify
10  ** it under the terms of the GNU General Public License as published by
11  ** the Free Software Foundation; either version 2 of the License, or
12  ** (at your option) any later version.
13  **
14  ** This program is distributed in the hope that it will be useful,
15  ** but WITHOUT ANY WARRANTY; without even the implied warranty of
16  ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  ** GNU General Public License for more details.
18  **
19  ** The LICENSE.txt file accompanying this software contains
20  ** a copy of the GNU General Public License. If it is not found,
21  ** write to the Free Software Foundation, Inc.,
22  ** 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
23  **
24  ********************************************************************
25 */
26 
27 #ifndef NIDAS_CORE_POLLED_H
28 #define NIDAS_CORE_POLLED_H
29 
33 #define POLL_EPOLL_ET 0 /* epoll edge-triggered */
34 #define POLL_EPOLL_LT 1 /* epoll level-triggered */
35 #define POLL_PSELECT 2 /* pselect */
36 #define POLL_POLL 3 /* poll/ppoll */
37 
68 #define POLLING_METHOD POLL_EPOLL_LT
69 
70 #include <sys/poll.h>
71 
82 #define N_POLLIN POLLIN
83 #define N_POLLERR POLLERR
84 #define N_POLLHUP POLLHUP
85 
86 // POLLRDHUP is somewhat new (Linux 2.6.17)
87 #ifdef POLLRDHUP
88 #define N_POLLRDHUP POLLRDHUP
89 #else
90 #define N_POLLRDHUP POLLHUP
91 #endif
92 
93 #if POLLING_METHOD == POLL_PSELECT
94 #include <sys/select.h>
95 #endif
96 
97 #if POLLING_METHOD == POLL_EPOLL_ET || POLLING_METHOD == POLL_EPOLL_LT
98 #include <sys/epoll.h>
99 #endif
100 
101 namespace nidas { namespace core {
102 
109 class Polled {
110 public:
111  virtual ~Polled() {}
112 
113  virtual int getFd() const = 0;
114 
121  virtual bool handlePollEvents(uint32_t events) throw() = 0;
122 };
123 
124 }} // namespace nidas namespace core
125 
126 #endif
Interface for objects with a file descriptor, providing a virtual method to be called when system cal...
Definition: Polled.h:109
virtual ~Polled()
Definition: Polled.h:111
virtual bool handlePollEvents(uint32_t events)=0
virtual int getFd() const =0