ACE
6.1.0
|
Abstract representation of ACE tokens. More...
#include <Local_Tokens.h>
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_Queue * | waiters (void) |
Return the queue of waiters. | |
virtual int | no_of_waiters (void) |
const ACE_TCHAR * | owner_id (void) |
The current owner. | |
const ACE_TCHAR * | name (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_Entry * | owner (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. |
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.
Stack of owners.
ACE_Tokens::ACE_Tokens | ( | void | ) |
Null constructor.
ACE_Tokens::~ACE_Tokens | ( | void | ) | [virtual] |
Destructor.
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.
Reimplemented in ACE_RW_Token, and ACE_Mutex_Token.
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.
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.