FXSingleEventThread Class Reference

#include <FXSingleEventThread.h>

Inheritance diagram for FXSingleEventThread:

FXObject FXThread GUILoadThread GUIRunThread

Detailed Description

Definition at line 20 of file FXSingleEventThread.h.


Public Types

enum  { ID_THREAD_EVENT }

Public Member Functions

 FXSingleEventThread (FXApp *a, MFXInterThreadEventClient *client)
long onThreadEvent (FXObject *, FXSelector, void *)
long onThreadSignal (FXObject *, FXSelector, void *)
virtual FXint run ()
void signal (FXuint seltype)
void signal ()
virtual ~FXSingleEventThread ()

Static Public Member Functions

static void sleep (long ms)

Protected Member Functions

 FXSingleEventThread ()

Private Member Functions

 FXSingleEventThread (const FXSingleEventThread &)
FXSingleEventThreadoperator= (const FXSingleEventThread &)

Private Attributes

FXEX::FXThreadEventHandle event
FXApp * myApp
MFXInterThreadEventClientmyClient

Member Enumeration Documentation

anonymous enum

Enumerator:
ID_THREAD_EVENT 

Definition at line 31 of file FXSingleEventThread.h.

00031          {
00032         ID_THREAD_EVENT
00033     };


Constructor & Destructor Documentation

FXSingleEventThread::FXSingleEventThread ( const FXSingleEventThread  )  [private]

FXSingleEventThread::FXSingleEventThread ( FXApp *  a,
MFXInterThreadEventClient client 
)

FXSingleEventThread::~FXSingleEventThread (  )  [virtual]

Definition at line 57 of file FXSingleEventThread.cpp.

References event, myApp, PIPE_READ, and PIPE_WRITE.

00057                                           {
00058 #ifndef WIN32
00059     myApp->removeInput(event[PIPE_READ],INPUT_READ);
00060     ::close(event[PIPE_READ]);
00061     ::close(event[PIPE_WRITE]);
00062     FXFREE(&event);
00063 #else
00064     myApp->removeInput(event,INPUT_READ);
00065     ::CloseHandle(event);
00066 #endif
00067 }

FXSingleEventThread::FXSingleEventThread (  )  [inline, protected]

Definition at line 59 of file FXSingleEventThread.h.

00059 { }


Member Function Documentation

long FXSingleEventThread::onThreadEvent ( FXObject ,
FXSelector  ,
void *   
)

Definition at line 106 of file FXSingleEventThread.cpp.

References MFXInterThreadEventClient::eventOccured(), and myClient.

00106                                                               {
00107     myClient->eventOccured();
00108     /*
00109     FXuint seltype1 = FXSELTYPE(SEL_THREAD);
00110     if(myTarget && myTarget->handle(this,FXSEL(seltype1,mySelector),NULL)) {
00111     }
00112     FXuint seltype = FXSELTYPE(sel);
00113     return myTarget && myTarget->handle(this,FXSEL(seltype,mySelector),NULL);
00114     */
00115     return 1;
00116 }

long FXSingleEventThread::onThreadSignal ( FXObject ,
FXSelector  ,
void *   
)

Definition at line 92 of file FXSingleEventThread.cpp.

References PIPE_READ, and FXEX::SEL_THREAD.

00092                                                                 {
00093     FXuint seltype=SEL_THREAD;
00094 #ifndef WIN32
00095     ::read(event[PIPE_READ],&seltype,sizeof(seltype));
00096 #else
00097     //FIXME need win32 support
00098 #endif
00099     FXSelector sel = FXSEL(SEL_THREAD,0);
00100     handle(this,sel,0);
00101     return 0;
00102 }

FXSingleEventThread& FXSingleEventThread::operator= ( const FXSingleEventThread  )  [private]

virtual FXint FXSingleEventThread::run (  )  [inline, virtual]

Reimplemented in GUILoadThread, and GUIRunThread.

Definition at line 46 of file FXSingleEventThread.h.

00046                         {
00047         return 0;
00048     }

void FXSingleEventThread::signal ( FXuint  seltype  ) 

Definition at line 82 of file FXSingleEventThread.cpp.

References event, and PIPE_WRITE.

00082                                           {
00083 #ifndef WIN32
00084     ::write(event[PIPE_WRITE],&seltype,sizeof(seltype));
00085 #else
00086     ::SetEvent(event);
00087 #endif
00088 }

void FXSingleEventThread::signal (  ) 

Definition at line 71 of file FXSingleEventThread.cpp.

References event, PIPE_WRITE, and FXEX::SEL_THREAD.

00071                             {
00072     FXuint seltype=SEL_THREAD;
00073 #ifndef WIN32
00074     ::write(event[PIPE_WRITE],&seltype,sizeof(seltype));
00075 #else
00076     ::SetEvent(event);
00077 #endif
00078 }

void FXSingleEventThread::sleep ( long  ms  )  [static]

Definition at line 120 of file FXSingleEventThread.cpp.

Referenced by GUIRunThread::run().

00120                                   {
00121 #ifdef WIN32
00122     Sleep(ms);
00123 #else
00124     long long us = ms * 1000;
00125     usleep(us);
00126 #endif
00127 }


Field Documentation

Definition at line 24 of file FXSingleEventThread.h.

Referenced by signal(), and ~FXSingleEventThread().

FXApp* FXSingleEventThread::myApp [private]

Definition at line 55 of file FXSingleEventThread.h.

Referenced by ~FXSingleEventThread().

Definition at line 56 of file FXSingleEventThread.h.

Referenced by onThreadEvent().


The documentation for this class was generated from the following files:

Generated on Wed May 5 00:06:41 2010 for Sumo - Simulation of Urban MObility by  doxygen 1.5.6