Allows atomic token group operations AND provides a ACE_Token manager interface.
More...
#include <Token_Collection.h>
|
| 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. More...
|
|
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. More...
|
|
virtual int | tryacquire (const ACE_TCHAR *token_name, void(*sleep_hook)(void *)=0) |
| Try to acquire token_name. More...
|
|
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. More...
|
|
virtual const ACE_TCHAR * | name (void) const |
|
| ACE_Token_Proxy (void) |
| Construction. More...
|
|
virtual | ~ACE_Token_Proxy (void) |
| Destructor. More...
|
|
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. More...
|
|
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. More...
|
|
void | dump (void) const |
| Dump the state of the class. More...
|
|
virtual int | type (void) const |
|
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.
COLLECTION maintains a mapping from token names to ACE_Tokens*.
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 |
| ) |
|
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 |
Dump the state of the class.
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.
COLLECTION maintains a mapping from token names to ACE_Tokens*.
bool ACE_Token_Collection::debug_ |
|
protected |
Whether to print out debug messages or not.
The documentation for this class was generated from the following files: