ACE  6.1.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Protected Attributes | List of all members
ACE_Tokens Class Referenceabstract

Abstract representation of ACE tokens. More...

#include <Local_Tokens.h>

Inheritance diagram for ACE_Tokens:
Inheritance graph
[legend]
Collaboration diagram for ACE_Tokens:
Collaboration graph
[legend]

Public Types

enum  TOKEN_TYPES { MUTEX, RWLOCK }
 
typedef ACE_Unbounded_Stack
< ACE_TPQ_Entry * > 
OWNER_STACK
 Stack of owners.
 

Public Member Functions

 ACE_Tokens (void)
 Null constructor.
 
virtual ~ACE_Tokens (void)
 Destructor.
 
virtual int acquire (ACE_TPQ_Entry *caller, int ignore_deadlock, int notify)=0
 No implementation.
 
virtual int tryacquire (ACE_TPQ_Entry *caller)=0
 No implementation.
 
virtual int renew (ACE_TPQ_Entry *caller, int requeue_position)=0
 No implementation.
 
virtual int release (ACE_TPQ_Entry *caller)=0
 No implementation.
 
void make_owner (ACE_TPQ_Entry *caller)
 
void remove (ACE_TPQ_Entry *caller)
 Remove the caller from the waiter list.
 
virtual int owners (OWNER_STACK &o, const ACE_TCHAR *id)=0
 
virtual int is_waiting_for (const ACE_TCHAR *id)=0
 Returns 1 if id is waiting for this token. 0 otherwise.
 
virtual int is_owner (const ACE_TCHAR *id)=0
 Returns 1 if id is an owner of this token. 0 otherwise.
 
virtual ACE_Token_Proxy_Queuewaiters (void)
 Return the queue of waiters.
 
virtual int no_of_waiters (void)
 
const ACE_TCHARowner_id (void)
 The current owner.
 
const ACE_TCHARname (void)
 Token name.
 
void inc_reference (void)
 
int dec_reference (void)
 
void dump (void) const
 Dump the state of the class.
 
virtual int type (void) const =0
 
void visit (int v)
 Mark or unmark the token as visited.
 
int visited (void)
 Check if the token has been visited.
 
ACE_TPQ_Entryowner (void)
 All the data of the current owner.
 

Protected Attributes

int visited_
 For the deadlock detection algorithm.
 
int reference_count_
 Reference count.
 
ACE_Token_Proxy_Queue waiters_
 List of client's owning and waiting the token.
 
ACE_TCHAR token_name_ [ACE_MAXTOKENNAMELEN]
 Name of token.
 

Detailed Description

Abstract representation of ACE tokens.

Not a public interface. Currently, I don't see a reason for providing an abstract interface at this level of the library. As of yet, no one uses ACE_Tokens derivatives through this abstract interface except for ACE_Token_Manager. It only uses the statistical methods which are shared by all Tokens. For that reason, it still makes since to have a common base class. However, acquire, renew, and release do not need to have matching interfaces throughout all Tokens. To add a new type of token (e.g. semaphore), this class must be subtyped to define the new semantics. See ACE_Token_Manager for details.

Member Typedef Documentation

Stack of owners.

Member Enumeration Documentation

These are the Token types supported by the library at ship time. There is no restriction on the number of Token types added by "3rd parties." These are only necessary for the Token Server.

Enumerator:
MUTEX 
RWLOCK 

Constructor & Destructor Documentation

ACE_Tokens::ACE_Tokens ( void  )

Null constructor.

ACE_Tokens::~ACE_Tokens ( void  )
virtual

Destructor.

Member Function Documentation

virtual int ACE_Tokens::acquire ( ACE_TPQ_Entry caller,
int  ignore_deadlock,
int  notify 
)
pure virtual

No implementation.

Implemented in ACE_RW_Token, and ACE_Mutex_Token.

int ACE_Tokens::dec_reference ( void  )
inline
void ACE_Tokens::dump ( void  ) const

Dump the state of the class.

void ACE_Tokens::inc_reference ( void  )
inline
virtual int ACE_Tokens::is_owner ( const ACE_TCHAR id)
pure virtual

Returns 1 if id is an owner of this token. 0 otherwise.

Implemented in ACE_RW_Token, and ACE_Mutex_Token.

virtual int ACE_Tokens::is_waiting_for ( const ACE_TCHAR id)
pure virtual

Returns 1 if id is waiting for this token. 0 otherwise.

Implemented in ACE_RW_Token, and ACE_Mutex_Token.

void ACE_Tokens::make_owner ( ACE_TPQ_Entry caller)

Move the caller to the front of the waiter list. This is for use with remote mutexes and shadow mutexes.

const ACE_TCHAR * ACE_Tokens::name ( void  )
inline

Token name.

int ACE_Tokens::no_of_waiters ( void  )
virtual

Return the number of proxies that are currently waiting to get the token.

ACE_TPQ_Entry * ACE_Tokens::owner ( void  )
inline

All the data of the current owner.

const ACE_TCHAR * ACE_Tokens::owner_id ( void  )
inline

The current owner.

virtual int ACE_Tokens::owners ( OWNER_STACK o,
const ACE_TCHAR id 
)
pure virtual

Returns a stack of the current owners. Returns -1 on error, 0 on success. If id is non-zero, returns 1 if id is an owner.

Implemented in ACE_RW_Token, and ACE_Mutex_Token.

virtual int ACE_Tokens::release ( ACE_TPQ_Entry caller)
pure virtual

No implementation.

Implemented in ACE_RW_Token, and ACE_Mutex_Token.

void ACE_Tokens::remove ( ACE_TPQ_Entry caller)
inline

Remove the caller from the waiter list.

virtual int ACE_Tokens::renew ( ACE_TPQ_Entry caller,
int  requeue_position 
)
pure virtual

No implementation.

Implemented in ACE_RW_Token, and ACE_Mutex_Token.

virtual int ACE_Tokens::tryacquire ( ACE_TPQ_Entry caller)
pure virtual

No implementation.

Implemented in ACE_RW_Token, and ACE_Mutex_Token.

virtual int ACE_Tokens::type ( void  ) const
pure virtual

Provides a manual RTTI mechanism. This method is used only by ACE_Token_Request so that the type of a token can be sent to a remote Token Server.

Implemented in ACE_RW_Token, and ACE_Mutex_Token.

void ACE_Tokens::visit ( int  v)
inline

Mark or unmark the token as visited.

int ACE_Tokens::visited ( void  )
inline

Check if the token has been visited.

ACE_Token_Proxy_Queue * ACE_Tokens::waiters ( void  )
virtual

Return the queue of waiters.

Member Data Documentation

int ACE_Tokens::reference_count_
protected

Reference count.

ACE_TCHAR ACE_Tokens::token_name_[ACE_MAXTOKENNAMELEN]
protected

Name of token.

int ACE_Tokens::visited_
protected

For the deadlock detection algorithm.

ACE_Token_Proxy_Queue ACE_Tokens::waiters_
protected

List of client's owning and waiting the token.


The documentation for this class was generated from the following files: