Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

MouseClient Class Reference

A client for reading mouseMessage from windows. More...

#include <MouseClient.h>

Inherits PClient.

List of all members.

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.


Detailed Description

This class dequeues messages from the pipe. The queue is stored 'on' the pipe by MousePipe.

Definition at line 32 of file MouseClient.h.


Constructor & Destructor Documentation

MouseClient::MouseClient const TString   name
 

Parameters:
name  : A TString used to generate unique names for the various kernel objects

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 }

MouseClient::~MouseClient   [virtual]
 

Object Destructor

Definition at line 27 of file MouseClient.cpp.

References hasMessage.

00028 {
00029     if(hasMessage != NULL)
00030         CloseHandle(hasMessage);
00031 }


Member Function Documentation

DWORD MouseClient::connect   [virtual]
 

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 }

DWORD MouseClient::deQueueMessage mouseMessage   message
 

Parameters:
message  : pointer to a mouseMessage structure
Returns:
DWORD : error status

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 }

void MouseClient::disconnect   [virtual]
 

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 }


The documentation for this class was generated from the following files:
Generated on Mon Mar 25 06:30:00 2002 for Window Dressing by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001