Line data Source code
1 : /****************************************************************************/
2 : // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3 : // Copyright (C) 2004-2024 German Aerospace Center (DLR) and others.
4 : // This program and the accompanying materials are made available under the
5 : // terms of the Eclipse Public License 2.0 which is available at
6 : // https://www.eclipse.org/legal/epl-2.0/
7 : // This Source Code may also be made available under the following Secondary
8 : // Licenses when the conditions for such availability set forth in the Eclipse
9 : // Public License 2.0 are satisfied: GNU General Public License, version 2
10 : // or later which is available at
11 : // https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12 : // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13 : /****************************************************************************/
14 : /// @file MFXSingleEventThread.h
15 : /// @author unknown_author
16 : /// @author Daniel Krajzewicz
17 : /// @author Michael Behrisch
18 : /// @date 2004-03-19
19 : ///
20 : //
21 : /****************************************************************************/
22 :
23 : #pragma once
24 : #include <config.h>
25 :
26 : #include "fxheader.h"
27 : #include <FXThread.h>
28 : #include "fxexdefs.h"
29 :
30 : class MFXInterThreadEventClient;
31 :
32 : class MFXSingleEventThread : public FXObject, public FXThread {
33 : /// @brief FOX declaration
34 0 : FXDECLARE(MFXSingleEventThread)
35 :
36 : public:
37 : enum {
38 : ID_THREAD_EVENT
39 : };
40 :
41 : /// @brief constructor
42 : MFXSingleEventThread(FXApp* a, MFXInterThreadEventClient* client);
43 :
44 : virtual ~MFXSingleEventThread();
45 :
46 : void signal();
47 :
48 : void signal(FXuint seltype);
49 :
50 0 : virtual FXint run() {
51 0 : return 0;
52 : }
53 :
54 : static void sleep(long ms);
55 :
56 : long onThreadSignal(FXObject*, FXSelector, void*);
57 :
58 : long onThreadEvent(FXObject*, FXSelector, void*);
59 :
60 : protected:
61 : /// @brief FOX need this
62 0 : MFXSingleEventThread() { }
63 :
64 : /// @brief pointer to APP
65 : FXApp* myApp = nullptr;
66 :
67 : /// @brief thread client
68 : MFXInterThreadEventClient* myClient = nullptr;
69 :
70 : private:
71 : /// @brief event
72 : FXEX::MFXThreadEventHandle event;
73 :
74 : /// @brief invalidate copy constructor
75 : MFXSingleEventThread(const MFXSingleEventThread&) = delete;
76 :
77 : /// @brief invalidate assignment constructor
78 : MFXSingleEventThread& operator=(const MFXSingleEventThread&) = delete;
79 : };
|