Allows atomic token group operations AND provides a ACE_Token manager interface.
More...
#include <Token_Collection.h>
List of all members.
Public Member Functions |
| ACE_Token_Collection (bool debug=false, const ACE_TCHAR *name=0) |
int | insert (ACE_Token_Proxy &token) |
int | extract (const ACE_TCHAR *token_name, ACE_Token_Proxy *&proxy) |
ACE_Token_Proxy * | is_member (const ACE_TCHAR *token_name) |
| Returns the proxy if true. 0 otherwise.
|
int | is_member (const ACE_Token_Proxy &token) |
virtual int | acquire (int notify=0, void(*sleep_hook)(void *)=0, ACE_Synch_Options &options=ACE_Synch_Options::defaults) |
virtual int | acquire (const ACE_TCHAR *token_name, int notify=0, void(*sleep_hook)(void *)=0, ACE_Synch_Options &options=ACE_Synch_Options::defaults) |
virtual int | tryacquire (void(*sleep_hook)(void *)=0) |
| Try to acquire all tokens in collection.
|
virtual int | tryacquire (const ACE_TCHAR *token_name, void(*sleep_hook)(void *)=0) |
| Try to acquire token_name.
|
virtual int | renew (int requeue_position=0, ACE_Synch_Options &options=ACE_Synch_Options::defaults) |
virtual int | renew (const ACE_TCHAR *token_name, int requeue_position=0, ACE_Synch_Options &options=ACE_Synch_Options::defaults) |
virtual int | release (ACE_Synch_Options &options=ACE_Synch_Options::defaults) |
virtual int | release (const ACE_TCHAR *token_name, ACE_Synch_Options &options=ACE_Synch_Options::defaults) |
| ~ACE_Token_Collection (void) |
void | dump (void) const |
| Dump the state of the class.
|
virtual const ACE_TCHAR * | name (void) const |
| ACE_Token_Proxy (void) |
| Construction.
|
virtual | ~ACE_Token_Proxy (void) |
| Destructor.
|
virtual int | open (const ACE_TCHAR *name, int ignore_deadlock=0, int debug=0) |
virtual int | remove (ACE_Synch_Options &options=ACE_Synch_Options::defaults) |
| Calls remove on the token.
|
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 ACE_TCHAR * | client_id (void) const |
virtual void | client_id (const ACE_TCHAR *client_id) |
virtual void | sleep_hook (void) |
virtual void | token_acquired (ACE_TPQ_Entry *) |
virtual const ACE_TCHAR * | owner_id (void) |
| The client id of the current token holder.
|
virtual int | type (void) const |
Detailed Description
Allows atomic token group operations AND provides a ACE_Token manager interface.
There are two types of operations offered by ACE_Token_Collection. The first is atomic operations on collections of Token_Proxies. In this respect, the ACE_Token_Collection can be thought of as a single token consisting of multiple Token_Proxies. The second role of the ACE_Token_Collection is as a ACE_Token manager. ACE_Token_Collection allows individual operations on single members of a collection of Token_Proxies. This provides a single access point for operations on multiple tokens.
- Bug:
- Although ACE_Token_Collection inherits from ACE_Token_Proxy, it can not be including in a collection. This is because <clone> returns zero for now.
Member Typedef Documentation
COLLECTION maintains a mapping from token names to ACE_Tokens*.
Constructor & Destructor Documentation
ACE_Token_Collection::ACE_Token_Collection |
( |
bool |
debug = false , |
|
|
const ACE_TCHAR * |
name = 0 |
|
) |
| |
debug print out verbose debugging messages. name will give a name to the collection. Collections don't really need names, but are sometimes useful for debugging.
ACE_Token_Collection::~ACE_Token_Collection |
( |
void |
| ) |
|
Member Function Documentation
Acquire "atomically" all resources in the collection. This is only successfull if all tokens in the collection could be acquired. options contains the blocking semantics, timeout value, etc. Returns: 0 on success, -1 on failure with errno
== problem. If and error or deadlock occurs for one of the tokens, all the tokens will be released and the method will return -1. Note that returning on detection of deadlock prevents livelock between competing collections. If a collection returns after detecting deadlock, it is the application's responsibility to not to blindly loop on the collection::acquire operation. In other words, once the collection reports deadlock, it is out of our hands.
Reimplemented from ACE_Token_Proxy.
Acquire the token corresponding to token_name. The other parameters are passed to <token>::acquire.
Return a dynamically allocated clone of the derived class.
Implements ACE_Token_Proxy.
void ACE_Token_Collection::dump |
( |
void |
| ) |
const |
Removes the ACE_Token matching the given token_name from the collection. On success, extract returns 0. On failure (token_name was not in the collection,) extract returns -1. On success, the state of the token found is copied into proxy. The returned ACE_Token_Proxy* must be deleted by the user.
Insert a Token into the collection. All ACE_Token type operations performed on the collection will also be performed on the new_proxy until it is removed. Note that no operations performed prior to the insertion will be performed. Returns: 0 on success, -1 on failure with errno
== problem. If a token proxy already exists in the collection with the same name, the insertion will fail. Also, <token> is copied. Note that during the copy, client_id's are not inherited. The client ID of the thread using the collection will be used. Client ID's can be changed explicity on each proxy using is_member.
Returns the proxy if true. 0 otherwise.
Is the specified token in the collection? 1, yes. 0, no.
const ACE_TCHAR * ACE_Token_Collection::name |
( |
void |
| ) |
const |
|
inlinevirtual |
Return the name of the collection. Not very functionally important, but sometimes a useful debugging tool.
Reimplemented from ACE_Token_Proxy.
Releases "atomically" all resources in the collection. This is only successfull if all tokens in the collection could be released. options contains the blocking semantics, timeout value, etc. Returns: 0 on success, -1 on failure with errno
== problem.
Reimplemented from ACE_Token_Proxy.
Release the token corresponding to <token_name>. The other parameters are passed to <token>::release.
Renews "atomically" all resources in the collection. This is only successfull if all tokens in the collection could be renewed. options contains the blocking semantics, timeout value, etc. Returns: 0 on success, -1 on failure with errno
== problem.
Reimplemented from ACE_Token_Proxy.
Renew the token corresponding to token_name. The other parameters are passed to <token>::renew.
int ACE_Token_Collection::tryacquire |
( |
void(*)(void *) |
sleep_hook = 0 | ) |
|
|
virtual |
Try to acquire all tokens in collection.
Reimplemented from ACE_Token_Proxy.
int ACE_Token_Collection::tryacquire |
( |
const ACE_TCHAR * |
token_name, |
|
|
void(*)(void *) |
sleep_hook = 0 |
|
) |
| |
|
virtual |
Try to acquire token_name.
Member Data Documentation
COLLECTION maintains a mapping from token names to ACE_Tokens*.
bool ACE_Token_Collection::debug_ |
|
protected |
Whether to print out debug messages or not.
Reimplemented from ACE_Token_Proxy.
The documentation for this class was generated from the following files: