#include <MousePipe.h>
Inherits PServer.
Public Methods | |
bool | queueMessage (const int, const int, const int) |
virtual void | disconnect () |
virtual bool | serve () |
MousePipe (const TString &name) | |
virtual | ~MousePipe () |
Private Types | |
typedef MousePipe::mouseMessage | mouseMessage |
The message sent over a mouse pipe. More... | |
Private Attributes | |
TString | semName |
The semaphore name. | |
HANDLE | numberInQueue |
Handle to the actual semaphore. |
Definition at line 20 of file MousePipe.h.
|
The message sent to VCC consits of x, y co-ordinates and the button state. |
|
Definition at line 34 of file MousePipe.cpp. References BUFFER_SIZE, numberInQueue, and semName.
00035 :PServer(TString( TEXT("Mouse") ) + name, true, BUFFER_SIZE) 00036 { 00037 semName = TString( TEXT("MOUSESEM") ) + name; 00038 numberInQueue = NULL; 00039 } |
|
Object Destructor Definition at line 44 of file MousePipe.cpp. References numberInQueue.
00045 { 00046 if(numberInQueue != NULL) 00047 CloseHandle(numberInQueue); 00048 } |
|
Calls PServer::disconnect() and removes the semaphore. See documentation for PServer. Reimplemented from PServer. Definition at line 110 of file MousePipe.cpp. References PServer::disconnect(), and numberInQueue. Referenced by serve().
00111 { 00112 PServer::disconnect(); 00113 00114 if(numberInQueue != NULL) 00115 CloseHandle(numberInQueue); 00116 } |
|
Queues a mouseMessage to the pipe
Definition at line 61 of file MousePipe.cpp. References MousePipe::mouseMessage::button, Pipe::hPipe, PServer::isConnected(), numberInQueue, MousePipe::mouseMessage::x, and MousePipe::mouseMessage::y. Referenced by registerMouse().
00062 { 00063 if( !isConnected() ){ 00064 return false; 00065 } 00066 00067 mouseMessage msg; 00068 msg.x = x; 00069 msg.y = y; 00070 msg.button = buttonState; 00071 00072 DWORD bytesWritten; 00073 if( ReleaseSemaphore(numberInQueue, 1, NULL) ){ 00074 // WriteFile will return very quickly since there is space in the buffer 00075 return WriteFile(hPipe, &msg, sizeof(mouseMessage), &bytesWritten, NULL) 00076 ? bytesWritten == sizeof(mouseMessage) : false; 00077 } else { // no space in buffer 00078 return false; 00079 } 00080 } |
|
Calls PServer::serve() and if successful creates a semaphore. See documentation for PServer. Reimplemented from PServer. Definition at line 86 of file MousePipe.cpp. References disconnect(), numberInQueue, QUEUE_LENGTH, semName, and PServer::serve(). Referenced by Connect().
00087 { 00088 if( !PServer::serve() ) { 00089 return false; 00090 } else { 00091 numberInQueue = CreateSemaphore( 00092 NULL, // default security 00093 0, // initial count ie 0 messages in pipe 00094 QUEUE_LENGTH, // maximum count 00095 semName); 00096 00097 if(numberInQueue == NULL){ 00098 disconnect(); 00099 return false; 00100 } 00101 00102 return true; 00103 } 00104 } |