#include <vrpn_Mutex.h>
Public Members | |||
![]() | ![]() | vrpn_PeerMutex (const char * name, int port, const char * NICaddress = NULL) | |
![]() | ![]() | This constructor opens a new connection/port for the mutex. | |
![]() | ![]() | ~vrpn_PeerMutex (void) | |
![]() | ![]() | If isHeldLocally(), calls release(). | |
![]() | ![]() | vrpn_bool | isAvailable (void) const |
![]() | ![]() | message. | |
![]() | ![]() | vrpn_bool | isHeldLocally (void) const |
![]() | ![]() | release() is called. | |
![]() | ![]() | vrpn_bool | isHeldRemotely (void) const |
![]() | ![]() | another process. | |
![]() | ![]() | int | numPeers (void) const |
![]() | ![]() | void | mainloop (void) |
![]() | ![]() | void | request (void) |
![]() | ![]() | if !isAvailable(), instead automatically triggering DeniedCallbacks. | |
![]() | ![]() | void | release (void) |
![]() | ![]() | and there isn't a request pending. | |
![]() | ![]() | void | addPeer (const char * stationName) |
![]() | ![]() | Takes a VRPN station name of the form "<host>:<port>". | |
![]() | ![]() | void | addRequestGrantedCallback (void * userdata, int (*) (void *)) |
![]() | ![]() | These callbacks are triggered when OUR request is granted. | |
![]() | ![]() | void | addRequestDeniedCallback (void * userdata, int (*) (void *)) |
![]() | ![]() | These callbacks are triggered when OUR request is denied. | |
![]() | ![]() | void | addTakeCallback (void * userdata, int (*) (void *)) |
![]() | ![]() | only be triggered once between triggerings of ReleaseCallbacks.). | |
![]() | ![]() | void | addReleaseCallback (void * userdata, int (*) (void *)) |
![]() | ![]() | mutex. | |
Protected Members | |||
![]() | ![]() | enum | state { OURS, REQUESTING, AVAILABLE, HELD_REMOTELY } |
![]() | ![]() | void | sendRequest (vrpn_Connection *) |
![]() | ![]() | void | sendRelease (vrpn_Connection *) |
![]() | ![]() | void | sendGrantRequest (vrpn_Connection *, vrpn_uint32 IPnumber, vrpn_uint32 PortNumber) |
![]() | ![]() | void | sendDenyRequest (vrpn_Connection *, vrpn_uint32 IPnumber, vrpn_uint32 PortNumber) |
![]() | ![]() | void | triggerGrantCallbacks (void) |
![]() | ![]() | void | triggerDenyCallbacks (void) |
![]() | ![]() | void | triggerTakeCallbacks (void) |
![]() | ![]() | void | triggerReleaseCallbacks (void) |
![]() | ![]() | void | checkGrantMutex (void) |
![]() | ![]() | void | init (const char * name) |
![]() | ![]() | vrpn_PeerMutex (const char * name, vrpn_Connection * c) | |
![]() | ![]() | resolve race conditions. | |
![]() | ![]() | char* | d_mutexName |
![]() | ![]() | state | d_state |
![]() | ![]() | int | d_numPeersGrantingLock |
![]() | ![]() | a request; when this reaches d_numPeers, the lock is ours. | |
![]() | ![]() | vrpn_Connection* | d_server |
![]() | ![]() | Receive on this connection. | |
![]() | ![]() | vrpn_Connection** | d_peer |
![]() | ![]() | Send on these connections to other Mutex's well-known-ports. | |
![]() | ![]() | int | d_numPeers |
![]() | ![]() | int | d_numConnectionsAllocated |
![]() | ![]() | Dynamic array size for d_peer and d_peerGrantedLock. | |
![]() | ![]() | vrpn_uint32 | d_myIP |
![]() | ![]() | vrpn_uint32 | d_myPort |
![]() | ![]() | vrpn_uint32 | d_holderIP |
![]() | ![]() | vrpn_int32 | d_holderPort |
![]() | ![]() | vrpn_int32 | d_myId |
![]() | ![]() | vrpn_int32 | d_request_type |
![]() | ![]() | vrpn_int32 | d_release_type |
![]() | ![]() | vrpn_int32 | d_grantRequest_type |
![]() | ![]() | vrpn_int32 | d_denyRequest_type |
![]() | ![]() | mutexCallback* | d_reqGrantedCB |
![]() | ![]() | mutexCallback* | d_reqDeniedCB |
![]() | ![]() | mutexCallback* | d_takeCB |
![]() | ![]() | mutexCallback* | d_releaseCB |
![]() | ![]() | peerData* | d_peerData |
![]() | ![]() | we abort requests that were interrupted by a shutdown. | |
Static Protected Members | |||
![]() | ![]() | int | handle_request (void *, vrpn_HANDLERPARAM) |
![]() | ![]() | int | handle_release (void *, vrpn_HANDLERPARAM) |
![]() | ![]() | int | handle_grantRequest (void *, vrpn_HANDLERPARAM) |
![]() | ![]() | int | handle_denyRequest (void *, vrpn_HANDLERPARAM) |
![]() | ![]() | int | handle_losePeer (void *, vrpn_HANDLERPARAM) |
enum vrpn_PeerMutex::state [protected]
|
| OURS | |
| REQUESTING | |
| AVAILABLE | |
| HELD_REMOTELY |
| vrpn_PeerMutex::vrpn_PeerMutex (const char * name, int port, const char * NICaddress = NULL) |
This constructor opens a new connection/port for the mutex.
| vrpn_PeerMutex::~vrpn_PeerMutex (void) |
If isHeldLocally(), calls release().
| vrpn_bool vrpn_PeerMutex::isAvailable (void) const |
message.
| vrpn_bool vrpn_PeerMutex::isHeldLocally (void) const |
release() is called.
| vrpn_bool vrpn_PeerMutex::isHeldRemotely (void) const |
another process.
| int vrpn_PeerMutex::numPeers (void) const |
| void vrpn_PeerMutex::mainloop (void) |
| void vrpn_PeerMutex::request (void) |
if !isAvailable(), instead automatically triggering DeniedCallbacks.
| void vrpn_PeerMutex::release (void) |
and there isn't a request pending.
| void vrpn_PeerMutex::addPeer (const char * stationName) |
Takes a VRPN station name of the form "<host>:<port>".
| void vrpn_PeerMutex::addRequestGrantedCallback (void * userdata, int(* f)(void *)) |
These callbacks are triggered when OUR request is granted.
| void vrpn_PeerMutex::addRequestDeniedCallback (void * userdata, int(* f)(void *)) |
These callbacks are triggered when OUR request is denied.
| void vrpn_PeerMutex::addTakeCallback (void * userdata, int(* f)(void *)) |
only be triggered once between triggerings of ReleaseCallbacks.).
| void vrpn_PeerMutex::addReleaseCallback (void * userdata, int(* f)(void *)) |
mutex.
void vrpn_PeerMutex::sendRequest (vrpn_Connection * c) [protected]
|
void vrpn_PeerMutex::sendRelease (vrpn_Connection * c) [protected]
|
void vrpn_PeerMutex::sendGrantRequest (vrpn_Connection * c, vrpn_uint32 IP, vrpn_uint32 PortNumber) [protected]
|
void vrpn_PeerMutex::sendDenyRequest (vrpn_Connection * c, vrpn_uint32 IP, vrpn_uint32 PortNumber) [protected]
|
void vrpn_PeerMutex::triggerGrantCallbacks (void) [protected]
|
void vrpn_PeerMutex::triggerDenyCallbacks (void) [protected]
|
void vrpn_PeerMutex::triggerTakeCallbacks (void) [protected]
|
void vrpn_PeerMutex::triggerReleaseCallbacks (void) [protected]
|
void vrpn_PeerMutex::checkGrantMutex (void) [protected]
|
void vrpn_PeerMutex::init (const char * name) [protected]
|
vrpn_PeerMutex::vrpn_PeerMutex (const char * name, vrpn_Connection * c) [protected]
|
resolve race conditions.
int vrpn_PeerMutex::handle_request (void * userdata, vrpn_HANDLERPARAM p) [static, protected]
|
int vrpn_PeerMutex::handle_release (void * userdata, vrpn_HANDLERPARAM p) [static, protected]
|
int vrpn_PeerMutex::handle_grantRequest (void * userdata, vrpn_HANDLERPARAM p) [static, protected]
|
int vrpn_PeerMutex::handle_denyRequest (void * userdata, vrpn_HANDLERPARAM p) [static, protected]
|
int vrpn_PeerMutex::handle_losePeer (void * userdata, vrpn_HANDLERPARAM) [static, protected]
|
char* vrpn_PeerMutex::d_mutexName [protected]
|
state vrpn_PeerMutex::d_state [protected]
|
int vrpn_PeerMutex::d_numPeersGrantingLock [protected]
|
a request; when this reaches d_numPeers, the lock is ours.
vrpn_Connection* vrpn_PeerMutex::d_server [protected]
|
Receive on this connection.
vrpn_Connection** vrpn_PeerMutex::d_peer [protected]
|
Send on these connections to other Mutex's well-known-ports.
int vrpn_PeerMutex::d_numPeers [protected]
|
int vrpn_PeerMutex::d_numConnectionsAllocated [protected]
|
Dynamic array size for d_peer and d_peerGrantedLock.
vrpn_uint32 vrpn_PeerMutex::d_myIP [protected]
|
vrpn_uint32 vrpn_PeerMutex::d_myPort [protected]
|
vrpn_uint32 vrpn_PeerMutex::d_holderIP [protected]
|
vrpn_int32 vrpn_PeerMutex::d_holderPort [protected]
|
vrpn_int32 vrpn_PeerMutex::d_myId [protected]
|
vrpn_int32 vrpn_PeerMutex::d_request_type [protected]
|
vrpn_int32 vrpn_PeerMutex::d_release_type [protected]
|
vrpn_int32 vrpn_PeerMutex::d_grantRequest_type [protected]
|
vrpn_int32 vrpn_PeerMutex::d_denyRequest_type [protected]
|
mutexCallback* vrpn_PeerMutex::d_reqGrantedCB [protected]
|
mutexCallback* vrpn_PeerMutex::d_reqDeniedCB [protected]
|
mutexCallback* vrpn_PeerMutex::d_takeCB [protected]
|
mutexCallback* vrpn_PeerMutex::d_releaseCB [protected]
|
peerData* vrpn_PeerMutex::d_peerData [protected]
|
we abort requests that were interrupted by a shutdown.
1.0.0 written by Dimitri van Heesch,
© 1997-1999