summaryrefslogtreecommitdiff
path: root/ace/Token_Collection.h
diff options
context:
space:
mode:
Diffstat (limited to 'ace/Token_Collection.h')
-rw-r--r--ace/Token_Collection.h243
1 files changed, 0 insertions, 243 deletions
diff --git a/ace/Token_Collection.h b/ace/Token_Collection.h
deleted file mode 100644
index 0d57cc0ca58..00000000000
--- a/ace/Token_Collection.h
+++ /dev/null
@@ -1,243 +0,0 @@
-// -*- C++ -*-
-
-//=============================================================================
-/**
- * @file Token_Collection.h
- *
- * $Id$
- *
- * The ACE_Token class offers methods for acquiring, renewing,
- * and releasing a synchronization token on a per-token basis. The
- * ACE_Token_Collection offers an interface for performing
- * operations on groups of tokens as a whole, or on a single token
- * within the collection.
- *
- * The atomic group operations are not yet implemented.
- *
- *
- * @author Douglas C. Schmidt (schmidt@cs.wustl.edu)
- * @author Tim Harrison (harrison@cs.wustl.edu)
- */
-//=============================================================================
-
-#ifndef ACE_TOKEN_COLLECTION_H
-#define ACE_TOKEN_COLLECTION_H
-#include /**/ "ace/pre.h"
-
-#include "ace/Map_Manager.h"
-
-#if !defined (ACE_LACKS_PRAGMA_ONCE)
-# pragma once
-#endif /* ACE_LACKS_PRAGMA_ONCE */
-
-#if defined (ACE_HAS_TOKENS_LIBRARY)
-
-#include "ace/Local_Tokens.h"
-#include "ace/Null_Mutex.h"
-
-ACE_BEGIN_VERSIONED_NAMESPACE_DECL
-
-/**
- * @class ACE_Token_Collection
- *
- * @brief 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.
- */
-class ACE_Export ACE_Token_Collection : public ACE_Token_Proxy
-{
-
- // = BUGS
- // 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.
-public:
- /**
- * @a debug print out verbose debugging messages. @a name will give a
- * name to the collection. Collections don't really need names, but
- * are sometimes useful for debugging.
- */
- ACE_Token_Collection (int debug = 0,
- const ACE_TCHAR *name = 0);
-
-// Collection Management operations
-
- /**
- * 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.
- */
- int insert (ACE_Token_Proxy &token);
-
- /**
- * 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 extract (const ACE_TCHAR *token_name, ACE_Token_Proxy *&proxy);
-
- /// returns the proxy if true. 0 otherwise.
- ACE_Token_Proxy *is_member (const ACE_TCHAR *token_name);
-
- /**
- * Is the specified token in the collection?
- * 1, yes.
- * 0, no.
- */
- int is_member (const ACE_Token_Proxy &token);
-
-// = Collective operation semantics.
-
-// For acquire, renew, and release, there are two interfaces. Once
-// interface allows an operation on a single token in the
-// collection. The collective interfaces perform atomic operations
-// on the entire collection. For instance, a collective acquire
-// will perform an acquire for each and every token in the
-// collection or the operation will fail. Currently, these
-// operations are performed with no ordering heuristics. That is,
-// the Collection steps through the tokens in the order they were
-// inserted. For each one it performs the operation (acquire,
-// renew, or release).
-
- /**
- * 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.
- */
- virtual int acquire (int notify = 0,
- void (*sleep_hook)(void *) = 0,
- ACE_Synch_Options &options =
- ACE_Synch_Options::defaults);
-
- /// Acquire the token corresponding to @a token_name. The other
- /// parameters are passed to <token>::acquire.
- virtual int acquire (const ACE_TCHAR *token_name,
- int notify = 0,
- void (*sleep_hook)(void *) = 0,
- ACE_Synch_Options &options =
- ACE_Synch_Options::defaults);
-
- /// Try to acquire all tokens in collection.
- virtual int tryacquire (void (*sleep_hook)(void *) = 0);
-
- /// Try to acquire @a token_name.
- virtual int tryacquire (const ACE_TCHAR *token_name,
- void (*sleep_hook)(void *) = 0);
-
- /**
- * 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.
- */
- virtual int renew (int requeue_position = 0,
- ACE_Synch_Options &options =
- ACE_Synch_Options::defaults);
-
-
- /// Renew the token corresponding to @a token_name. The other
- /// parameters are passed to <token>::renew.
- virtual int renew (const ACE_TCHAR *token_name,
- int requeue_position = 0,
- ACE_Synch_Options &options =
- ACE_Synch_Options::defaults);
-
- /**
- * 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.
- */
- virtual int release (ACE_Synch_Options &options =
- ACE_Synch_Options::defaults);
-
-
- /// Release the token corresponding to <token_name>. The other
- /// parameters are passed to <token>::release.
- virtual int release (const ACE_TCHAR *token_name,
- ACE_Synch_Options &options =
- ACE_Synch_Options::defaults);
-
- ~ACE_Token_Collection (void);
-
- /// Dump the state of the class.
- void dump (void) const;
-
- /// Return the name of the collection. Not very functionally
- /// important, but sometimes a useful debugging tool.
- virtual const ACE_TCHAR *name (void) const;
-
-protected:
-
- typedef ACE_Token_Name TOKEN_NAME;
-
- /// COLLECTION maintains a mapping from token names to ACE_Tokens*
- typedef ACE_Map_Manager<TOKEN_NAME, ACE_Token_Proxy *, ACE_Null_Mutex>
- COLLECTION;
-
- /// Allows iterations through collection_
- /**
- * @deprecated Deprecated typedef. Use COLLECTION::ITERATOR trait instead.
- */
- typedef COLLECTION::ITERATOR COLLECTION_ITERATOR;
-
- /// Allows iterations through collection_
- /**
- * @deprecated Deprecated typedef. Use COLLECTION::ENTRY trait instead.
- */
- typedef COLLECTION::ENTRY COLLECTION_ENTRY;
-
- /// COLLECTION maintains a mapping from token names to ACE_Tokens*.
- COLLECTION collection_;
-
- /// Whether to print out debug messages or not.
- int debug_;
-
- /// Name of the collection.
- ACE_TCHAR name_[ACE_MAXTOKENNAMELEN];
-
- // = I'm not sure what these mean, but they have to be defined since they're
- // pure virtual in ACE_Token_Proxy.
- virtual ACE_Token_Proxy *clone (void) const;
- virtual ACE_Tokens *create_token (const ACE_TCHAR *name);
-};
-
-ACE_END_VERSIONED_NAMESPACE_DECL
-
-#if defined (__ACE_INLINE__)
-#include "ace/Token_Collection.inl"
-#endif /* __ACE_INLINE__ */
-
-#endif /* ACE_HAS_TOKENS_LIBRARY */
-
-#include /**/ "ace/post.h"
-#endif /* ACE_TOKEN_COLLECTION_H */