ACE  6.4.2
Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
ACE_Token_Collection Class Reference

Allows atomic token group operations AND provides a ACE_Token manager interface. More...

#include <Token_Collection.h>

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

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_Proxyis_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_TCHARname (void) const
 
- Public Member Functions inherited from ACE_Token_Proxy
 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_TCHARclient_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_TCHARowner_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
 

Protected Types

typedef ACE_Token_Name TOKEN_NAME
 
typedef ACE_Map_Manager< TOKEN_NAME, ACE_Token_Proxy *, ACE_Null_MutexCOLLECTION
 COLLECTION maintains a mapping from token names to ACE_Tokens*. More...
 

Protected Member Functions

virtual ACE_Token_Proxyclone (void) const
 Return a dynamically allocated clone of the derived class. More...
 
virtual ACE_Tokenscreate_token (const ACE_TCHAR *name)
 
- Protected Member Functions inherited from ACE_Token_Proxy
 ACE_Token_Proxy (const ACE_Token_Proxy &)
 Duplication. More...
 
int handle_options (ACE_Synch_Options &options, ACE_TOKEN_CONST::COND_VAR &cv)
 Handles cond_var waits. More...
 

Protected Attributes

COLLECTION collection_
 COLLECTION maintains a mapping from token names to ACE_Tokens*. More...
 
bool debug_
 Whether to print out debug messages or not. More...
 
ACE_TCHAR name_ [ACE_MAXTOKENNAMELEN]
 Name of the collection. More...
 
- Protected Attributes inherited from ACE_Token_Proxy
int ignore_deadlock_
 If this is set, we ignore deadlock. More...
 
int debug_
 Print a bunch of debug messages. More...
 
ACE_Tokenstoken_
 
ACE_TSS_TPQ_Entry waiter_
 Waiter info used for asynchronous transactions. More...
 

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

int ACE_Token_Collection::acquire ( int  notify = 0,
void(*)(void *)  sleep_hook = 0,
ACE_Synch_Options options = ACE_Synch_Options::defaults 
)
virtual

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.

int ACE_Token_Collection::acquire ( const ACE_TCHAR token_name,
int  notify = 0,
void(*)(void *)  sleep_hook = 0,
ACE_Synch_Options options = ACE_Synch_Options::defaults 
)
virtual

Acquire the token corresponding to token_name. The other parameters are passed to <token>::acquire.

ACE_Token_Proxy * ACE_Token_Collection::clone ( void  ) const
protectedvirtual

Return a dynamically allocated clone of the derived class.

Implements ACE_Token_Proxy.

ACE_Tokens * ACE_Token_Collection::create_token ( const ACE_TCHAR name)
protectedvirtual

Make the correct type of ACE_Tokens. This is called by the Token Manager.

Implements ACE_Token_Proxy.

void ACE_Token_Collection::dump ( void  ) const

Dump the state of the class.

int ACE_Token_Collection::extract ( const ACE_TCHAR token_name,
ACE_Token_Proxy *&  proxy 
)

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.

int ACE_Token_Collection::insert ( ACE_Token_Proxy token)

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.

ACE_Token_Proxy * ACE_Token_Collection::is_member ( const ACE_TCHAR token_name)

Returns the proxy if true. 0 otherwise.

int ACE_Token_Collection::is_member ( const ACE_Token_Proxy token)

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.

int ACE_Token_Collection::release ( ACE_Synch_Options options = ACE_Synch_Options::defaults)
virtual

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.

int ACE_Token_Collection::release ( const ACE_TCHAR token_name,
ACE_Synch_Options options = ACE_Synch_Options::defaults 
)
virtual

Release the token corresponding to <token_name>. The other parameters are passed to <token>::release.

int ACE_Token_Collection::renew ( int  requeue_position = 0,
ACE_Synch_Options options = ACE_Synch_Options::defaults 
)
virtual

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.

int ACE_Token_Collection::renew ( const ACE_TCHAR token_name,
int  requeue_position = 0,
ACE_Synch_Options options = ACE_Synch_Options::defaults 
)
virtual

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 ACE_Token_Collection::collection_
protected

COLLECTION maintains a mapping from token names to ACE_Tokens*.

bool ACE_Token_Collection::debug_
protected

Whether to print out debug messages or not.

ACE_TCHAR ACE_Token_Collection::name_[ACE_MAXTOKENNAMELEN]
protected

Name of the collection.


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