#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