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.
|
| 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 | dump () const |
| | Dump the state of the class.
|
| virtual const ACE_TCHAR * | name () const |
| | ACE_Token_Proxy () |
| | Construction.
|
| virtual | ~ACE_Token_Proxy () |
| | 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 () const |
| virtual void | client_id (const ACE_TCHAR *client_id) |
| virtual void | sleep_hook () |
| virtual void | token_acquired (ACE_TPQ_Entry *) |
| virtual const ACE_TCHAR * | owner_id () |
| | The client id of the current token holder.
|
| void | dump () const |
| | Dump the state of the class.
|
| virtual int | type () 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
COLLECTION maintains a mapping from token names to ACE_Tokens*.
◆ TOKEN_NAME
◆ ACE_Token_Collection()
| 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::~ACE_Token_Collection |
( |
| ) |
|
◆ acquire() [1/2]
Acquire the token corresponding to token_name. The other parameters are passed to <token>::acquire.
◆ acquire() [2/2]
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.
◆ clone()
Return a dynamically allocated clone of the derived class.
Implements ACE_Token_Proxy.
◆ create_token()
◆ dump()
| void ACE_Token_Collection::dump |
( |
| ) |
const |
Dump the state of the class.
◆ extract()
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()
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.
◆ is_member() [1/2]
Returns the proxy if true. 0 otherwise.
◆ is_member() [2/2]
Is the specified token in the collection? 1, yes. 0, no.
◆ name()
Return the name of the collection. Not very functionally important, but sometimes a useful debugging tool.
Reimplemented from ACE_Token_Proxy.
◆ release() [1/2]
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() [2/2]
Release the token corresponding to <token_name>. The other parameters are passed to <token>release.
◆ renew() [1/2]
Renew the token corresponding to token_name. The other parameters are passed to <token>::renew.
◆ renew() [2/2]
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.
◆ tryacquire() [1/2]
| int ACE_Token_Collection::tryacquire |
( |
const ACE_TCHAR * | token_name, |
|
|
void(* | sleep_hook )(void *) = 0 ) |
|
virtual |
Try to acquire token_name.
◆ tryacquire() [2/2]
| int ACE_Token_Collection::tryacquire |
( |
void(* | sleep_hook )(void *) = 0 | ) |
|
|
virtual |
Try to acquire all tokens in collection.
Reimplemented from ACE_Token_Proxy.
◆ collection_
COLLECTION maintains a mapping from token names to ACE_Tokens*.
◆ debug_
| bool ACE_Token_Collection::debug_ |
|
protected |
Whether to print out debug messages or not.
◆ name_
The documentation for this class was generated from the following files: