#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 }
|
1.2.13.1 written by Dimitri van Heesch,
© 1997-2001