Line data Source code
1 :
2 : /* Copyright (c) 2007-2013, Stefan Eilemann <eile@equalizergraphics.com>
3 : *
4 : * This library is free software; you can redistribute it and/or modify it under
5 : * the terms of the GNU Lesser General Public License version 2.1 as published
6 : * by the Free Software Foundation.
7 : *
8 : * This library is distributed in the hope that it will be useful, but WITHOUT
9 : * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
10 : * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
11 : * details.
12 : *
13 : * You should have received a copy of the GNU Lesser General Public License
14 : * along with this library; if not, write to the Free Software Foundation, Inc.,
15 : * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
16 : */
17 :
18 : #ifndef EQ_MESSAGEPUMP_H
19 : #define EQ_MESSAGEPUMP_H
20 :
21 : #include <eq/client/api.h>
22 : #include <eq/client/types.h>
23 :
24 : namespace eq
25 : {
26 : /** An interface to process system messages or events. */
27 : class MessagePump
28 : {
29 : public:
30 : /** Construct a new message pump. @version 1.0 */
31 15 : MessagePump() {}
32 :
33 : /** Destruct this message pump. @version 1.0 */
34 15 : virtual ~MessagePump() {}
35 :
36 : /** Unblock dispatchOne(). @version 1.0 */
37 : virtual void postWakeup() = 0;
38 :
39 : /** Dispatch all pending system events, does not block. @version 1.0 */
40 : virtual void dispatchAll() = 0;
41 :
42 : /**
43 : * Dispatch at least one pending system event, blocks potentially.
44 : * @param timeout the time to wait for an event
45 : * @version 1.0
46 : */
47 : virtual void dispatchOne( const uint32_t timeout =
48 : LB_TIMEOUT_INDEFINITE ) = 0;
49 :
50 : /** Register a new DC connection for event dispatch. @version 1.7.1 */
51 0 : virtual void register_( dc::Proxy* )
52 0 : { LBWARN << "Missing message pump for DisplayCluster" << std::endl; }
53 :
54 : /** Deregister a DC connection from event dispatch. @version 1.7.1 */
55 0 : virtual void deregister( dc::Proxy* ) { /*Not implemented*/ }
56 : };
57 : }
58 :
59 : #endif //EQ_MESSAGEPUMP_H
|