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