X-Plane Remote Access Plugin and Client Library
ListenThread.h
1 // Copyright (c) 2013 by István Váradi
2 
3 // This file is part of XPLRA, a remote-access plugin for X-Plane
4 
5 // Redistribution and use in source and binary forms, with or without
6 // modification, are permitted provided that the following conditions are met:
7 
8 // 1. Redistributions of source code must retain the above copyright notice, this
9 // list of conditions and the following disclaimer.
10 // 2. Redistributions in binary form must reproduce the above copyright notice,
11 // this list of conditions and the following disclaimer in the documentation
12 // and/or other materials provided with the distribution.
13 
14 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
15 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
16 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17 // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
18 // ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
19 // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
20 // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
21 // ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
23 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 
25 // The views and conclusions contained in the software and documentation are those
26 // of the authors and should not be interpreted as representing official policies,
27 // either expressed or implied, of the FreeBSD Project.
28 
29 #ifndef XPLRA_LISTENTHREAD_H
30 #define XPLRA_LISTENTHREAD_H
31 //------------------------------------------------------------------------------
32 
33 #include <hu/varadiistvan/scpl/Thread.h>
34 
35 #include "RequestQueue.h"
36 
37 #include <hu/varadiistvan/scpl/io/Waiter.h>
38 #include <hu/varadiistvan/scpl/io/WaitableEvent.h>
39 
40 //------------------------------------------------------------------------------
41 
42 namespace xplra {
43 
44 //------------------------------------------------------------------------------
45 
46 class Globals;
47 
48 //------------------------------------------------------------------------------
49 
56 class ListenThread : public hu::varadiistvan::scpl::Thread
57 {
58 public:
62  static const unsigned short defaultTCPPort = 0x5852;
63 
64 private:
69 
73  hu::varadiistvan::scpl::io::Waiter waiter;
74 
79  hu::varadiistvan::scpl::io::WaitableEvent quitEvent;
80 
85 
86 public:
91 
96 
100  void quit();
101 
105  virtual void run();
106 };
107 
108 //------------------------------------------------------------------------------
109 // Inline definitions
110 //------------------------------------------------------------------------------
111 
113  globals(globals),
114  quitEvent(&waiter)
115 {
116 }
117 
118 //------------------------------------------------------------------------------
119 
121 {
122  return globals;
123 }
124 
125 //------------------------------------------------------------------------------
126 
127 inline void ListenThread::quit()
128 {
130  quitEvent.fire();
131 }
132 
133 //------------------------------------------------------------------------------
134 
135 } /* namespace xplra */
136 
137 //------------------------------------------------------------------------------
138 #endif // XPLRA_LISTENTHREAD_H
139 
140 // Local Variables:
141 // mode: C++
142 // c-basic-offset: 4
143 // indent-tabs-mode: nil
144 // End:
hu::varadiistvan::scpl::io::WaitableEvent quitEvent
Definition: ListenThread.h:79
ListenThread(Globals &globals)
Definition: ListenThread.h:112
virtual void run()
Definition: ListenThread.cc:53
Globals & getGlobals()
Definition: ListenThread.h:120
hu::varadiistvan::scpl::io::Waiter waiter
Definition: ListenThread.h:73
static const unsigned short defaultTCPPort
Definition: ListenThread.h:62
RequestQueue requestQueue
Definition: ListenThread.h:84
Python client module for the X-Plane Remote Access plugin.
Definition: DataRefTask.h:41