#include <ace/Local_Tokens.h>
class ACE_Token_Proxy {
public:friend class ACE_Token_Manager;friend class ACE_Token_Invariant_Manager; // For testing.;ACE_Token_Proxy (void);virtual ~ACE_Token_Proxy (void);virtual int open ( const ASYS_TCHAR *name, int ignore_deadlock = 0, int debug = 0 );virtual int acquire (int notify = 0, void (*sleep_hook)( void *) = 0, ACE_Synch_Options &options = ACE_Synch_Options::defaults );virtual int renew ( int requeue_position = -1, ACE_Synch_Options &options = ACE_Synch_Options::defaults );virtual int tryacquire (void (*sleep_hook)(void *) = 0);ACE_Synch_Options::defaults);ACE_Synch_Options::defaults);virtual int acquire_read (int notify = 0, void (*sleep_hook)( void *) = 0, ACE_Synch_Options &options = ACE_Synch_Options::defaults );virtual int acquire_write (int notify = 0, void (*sleep_hook)( void *) = 0, ACE_Synch_Options &options = ACE_Synch_Options::defaults );virtual int tryacquire_read (void (*sleep_hook)(void *) = 0);virtual int tryacquire_write (void (*sleep_hook)(void *) = 0);virtual const ASYS_TCHAR *client_id (void) const;virtual void client_id (const ASYS_TCHAR *client_id);virtual const ASYS_TCHAR *name (void) const;virtual void sleep_hook (void);virtual void token_acquired (ACE_TPQ_Entry *);virtual const ASYS_TCHAR *owner_id (void);virtual ACE_Token_Proxy *clone (void) const = 0;void dump (void) const;virtual int type (void) const;protected:ACE_Token_Proxy (const ACE_Token_Proxy &);int ignore_deadlock_;int debug_;ACE_Tokens *token_;int handle_options ( ACE_Synch_Options &options, ACE_TOKEN_CONST::COND_VAR &cv );ACE_TSS_TPQ_Entry waiter_;virtual ACE_Tokens *create_token (const ASYS_TCHAR *name) = 0;};
public: 7. ACE_Token_Proxy 8. ACE_Null_Token : public ACE_Token_Proxy 9. ACE_Local_Mutex : public ACE_Token_Proxy *. ACE_Local_RLock : public ACE_Local_Mutex &. ACE_Local_WLock : public ACE_Local_Mutex private: 1. ACE_TOKEN_CONST 3. ACE_TPQ_Entry b. ACE_TSS_TPQ_Entry c. ACE_TPQ_Iterator 4. ACE_Token_Proxy_Queue 5. ACE_Tokens 6. ACE_Mutex_Token : public ACE_Tokens 12. ACE_RW_Token : public ACE_Tokens a. ACE_Token_Name
Note that the locking classes defined in this file are *not*
intended to be used as general-purpose synchronization
mechanisms, such as mutexes or semaphores. Instead, you should
use the ACE_Recursive_Thread_Mutex, ACE_Thread_Mutex,
ACE_Thread_Semaphore, etc., that are defined in
$ACE_ROOT/ace/Synch.h and $ACE_ROOT/ace/Synch_T.h or the
ACE_Token that's defined in $ACE_ROOT/ace/Token.h.
virtual int acquire (int notify = 0, void (*sleep_hook)(
void *) = 0,
ACE_Synch_Options &options = ACE_Synch_Options::defaults
);
virtual int renew (
int requeue_position = -1,
ACE_Synch_Options &options = ACE_Synch_Options::defaults
);
virtual int tryacquire (void (*sleep_hook)(void *) = 0);
ACE_Synch_Options::defaults);
ACE_Synch_Options::defaults);
virtual int acquire_read (int notify = 0, void (*sleep_hook)(
void *) = 0,
ACE_Synch_Options &options = ACE_Synch_Options::defaults
);
acquire.
virtual int acquire_write (int notify = 0, void (*sleep_hook)(
void *) = 0,
ACE_Synch_Options &options = ACE_Synch_Options::defaults
);
acquire.
virtual int tryacquire_read (void (*sleep_hook)(void *) = 0);
tryacquire.
virtual int tryacquire_write (void (*sleep_hook)(void *) = 0);
tryacquire.
virtual const ASYS_TCHAR *client_id (void) const;
virtual void client_id (const ASYS_TCHAR *client_id);
virtual const ASYS_TCHAR *name (void) const;
virtual void sleep_hook (void);
someone_waiting. This is called
by ACE_Token_xx's when another proxy enters the waiting list and
requests that the current token holder be notified.
virtual void token_acquired (ACE_TPQ_Entry *);
virtual const ASYS_TCHAR *owner_id (void);
virtual ACE_Token_Proxy *clone (void) const = 0;
void dump (void) const;
virtual int type (void) const;
kdorn@erlh.siemens.de,
Douglas C. Schmidt schmidt@cs.wustl.edu, and
Tim Harrison harrison@cs.wustl.edu