NAME
ACE_Future_Set - This class implements a mechanism which allows the values of a collections of ACE_Future objects to be accessed by reader threads as they become available.
SYNOPSIS
#include <ace/Future_Set.h>
template<class T>
class ACE_Future_Set : public ACE_Future_Observer<T>
{
public:
ACE_Future_Set (
ACE_Message_Queue<ACE_SYNCH> *future_notification_queue_ = 0
);
~ACE_Future_Set (void);
int is_empty (void) const;
int insert (ACE_Future<T> &future);
int next_readable (ACE_Future<T> &result, ACE_Time_Value *tv = 0);
virtual void update (const ACE_Future<T> &future);
ACE_ALLOC_HOOK_DECLARE;
private:
inline ACE_UNIMPLEMENTED_FUNC (
void operator= (const ACE_Future_Set<T> &)
);
typedef ACE_Future<T> FUTURE;
typedef ACE_Future_Rep<T> FUTURE_REP;
typedef ACE_Future_Holder<T> FUTURE_HOLDER;
typedef ACE_Pointer_Hash<FUTURE_REP *> FUTURE_REP_HASH;
typedef ACE_Equal_To<FUTURE_REP *> FUTURE_REP_COMPARE;
typedef ACE_Hash_Map_Manager_Ex<FUTURE_REP *, FUTURE_HOLDER *, FUTURE_REP_HASH, FUTURE_REP_COMPARE, ACE_Null_Mutex> FUTURE_HASH_MAP;
FUTURE_HASH_MAP future_map_;
ACE_Message_Queue<ACE_SYNCH> *future_notification_queue_;
int delete_queue_;
};
Initialization and termination methods.
ACE_Future_Set (
ACE_Message_Queue<ACE_SYNCH> *future_notification_queue_ = 0
);
Constructor.
~ACE_Future_Set (void);
Destructor.
int is_empty (void) const;
Return 1 if their are no ACE_Future objects left on its queue and 0 otherwise
int insert (ACE_Future<T> &future);
Enqueus the given ACE_Future into this objects queue when it is readable.
Returns 0 if the future is successfully inserted, 1 if the future is already inserted, and -1 if failures occur.
int next_readable (ACE_Future<T> &result, ACE_Time_Value *tv = 0);
Wait up to tv time to get the value. Note that tv must be specified in absolute time rather than relative time.); get the next ACE_Future that is readable. If tv = 0, the will block forever.
If a readable future becomes available, then the input result will be assigned with it and 1 will will be returned. If the set is empty, then 0 is returned.
virtual void update (const ACE_Future<T> &future);
Called by the ACE_Future subject in which we are subscribed to when its value is written to.
ACE_ALLOC_HOOK_DECLARE;
Declare the dynamic allocation hooks.
Disallow these operations.
inline ACE_UNIMPLEMENTED_FUNC (
void operator= (const ACE_Future_Set<T> &)
);
typedef ACE_Future<T> FUTURE;
typedef ACE_Future_Rep<T> FUTURE_REP;
typedef ACE_Future_Holder<T> FUTURE_HOLDER;
typedef ACE_Pointer_Hash<FUTURE_REP *> FUTURE_REP_HASH;
typedef ACE_Equal_To<FUTURE_REP *> FUTURE_REP_COMPARE;
typedef ACE_Hash_Map_Manager_Ex<FUTURE_REP *, FUTURE_HOLDER *, FUTURE_REP_HASH, FUTURE_REP_COMPARE, ACE_Null_Mutex> FUTURE_HASH_MAP;
FUTURE_HASH_MAP future_map_;
Map of ACE_Futures, subjects, which have not been written to by client's writer thread.
ACE_Message_Queue<ACE_SYNCH> *future_notification_queue_;
Message queue for notifying the reader thread of ACE_Futures which have been written to by client's writer thread.
int delete_queue_;
Keeps track of whether we need to delete the message queue.
AUTHOR (S)
John Tucker [email protected]
LIBRARY
ace