#include <MouseClient.h>
Inherits PClient.
Public Methods | |
DWORD | deQueueMessage (mouseMessage *message) |
virtual DWORD | connect () |
virtual void | disconnect () |
MouseClient (const TString &) | |
virtual | ~MouseClient () |
Private Attributes | |
HANDLE | hasMessage |
Handle to the semaphore created by MousePipe. | |
TString | semName |
The semaphores name. |
Definition at line 32 of file MouseClient.h.
|
Definition at line 17 of file MouseClient.cpp. References hasMessage, and semName.
00018 :PClient( TString( TEXT("MOUSE") ) + name, false) 00019 { 00020 semName = TString( TEXT("MOUSESEM") ) + name; 00021 hasMessage = NULL; 00022 } |
|
Object Destructor Definition at line 27 of file MouseClient.cpp. References hasMessage.
00028 { 00029 if(hasMessage != NULL) 00030 CloseHandle(hasMessage); 00031 } |
|
Attempts to connect to server, fails if server isn't serving. Reimplemented from PClient. Definition at line 37 of file MouseClient.cpp. References PClient::connect(), PClient::disconnect(), hasMessage, PC_CONNECTED, PC_FAILED, and semName. Referenced by WinMain().
00038 { 00039 DWORD success = PClient::connect(); 00040 00041 if( PC_CONNECTED == success ) { 00042 hasMessage = OpenSemaphore(SEMAPHORE_ALL_ACCESS, false, semName); 00043 if( hasMessage == NULL ){ 00044 PClient::disconnect(); 00045 success = PC_FAILED; 00046 } 00047 } 00048 00049 return success; 00050 } |
|
Definition at line 63 of file MouseClient.cpp. References disconnect(), hasMessage, Pipe::hPipe, PClient::isConnected(), MI_INVALID_PTR, MI_NO_MESSAGE, MI_NOT_CONNECTED, MI_SUCCESS, and MI_UNKNOWN_ERROR. Referenced by WinMain().
00064 { 00065 if( !isConnected() ){ 00066 return MI_NOT_CONNECTED; 00067 } 00068 00069 DWORD numBytesRead; 00070 00071 if( message == NULL ) { 00072 return MI_INVALID_PTR; 00073 00074 } else if( WAIT_OBJECT_0 == WaitForSingleObject(hasMessage, 0) ) { 00075 00076 if( ReadFile( 00077 hPipe, // Read from 00078 message, // data buffer 00079 sizeof(mouseMessage), // number of bytes to read 00080 &numBytesRead, // number of bytes read 00081 NULL) ) { 00082 00083 if( numBytesRead != sizeof(mouseMessage) ) { 00084 return MI_UNKNOWN_ERROR; 00085 } else { 00086 return MI_SUCCESS; 00087 } 00088 } else if(ERROR_READ_FAULT == GetLastError()) { 00089 disconnect(); 00090 /* \todo decide what to do (throw exception?) */ 00091 } 00092 return MI_UNKNOWN_ERROR; 00093 } else { 00094 return MI_NO_MESSAGE; 00095 } 00096 } |
|
Disconnects the pipe and resets the servers event (signaling it to disconnect). Reimplemented from PClient. Definition at line 52 of file MouseClient.cpp. References PClient::disconnect(), and hasMessage. Referenced by deQueueMessage(), and WinMain().
00053 { 00054 if(hasMessage != NULL) 00055 CloseHandle(hasMessage); 00056 PClient::disconnect(); 00057 } |