#include <ace/Message_Queue.h>
class ACE_Message_Queue_NT : public ACE_Message_Queue_Base {
public:
ACE_Message_Queue_NT ( size_t max_threads = ACE_Message_Queue_Base::DEFAULT_HWM );
virtual int open ( size_t max_threads = ACE_Message_Queue_Base::DEFAULT_HWM );
virtual int close (void);
virtual ~ACE_Message_Queue_NT (void);
virtual int enqueue_tail ( ACE_Message_Block *new_item, ACE_Time_Value *timeout = 0 );
virtual int enqueue ( ACE_Message_Block *new_item, ACE_Time_Value *timeout = 0 );
virtual int dequeue_head ( ACE_Message_Block *&first_item, ACE_Time_Value *timeout = 0 );
virtual int dequeue ( ACE_Message_Block *&first_item, ACE_Time_Value *timeout = 0 );
virtual int is_full (void);
virtual int is_empty (void);
virtual size_t message_bytes (void);
virtual size_t message_length (void);
virtual size_t message_count (void);
virtual void message_bytes (size_t new_size);
virtual void message_length (size_t new_length);
virtual size_t max_threads (void);
virtual int deactivate (void);
virtual int activate (void);
virtual int deactivated (void);
virtual void dump (void) const;
virtual ACE_HANDLE completion_port (void);
ACE_ALLOC_HOOK_DECLARE;
private:
size_t max_cthrs_;
size_t cur_thrs_;
size_t cur_bytes_;
size_t cur_length_;
size_t cur_count_;
ACE_Thread_Mutex lock_;
int deactivated_;
ACE_HANDLE completion_port_;
inline ACE_UNIMPLEMENTED_FUNC ( void operator= (const ACE_Message_Queue_NT &) );
};
NOTE: *Many* ACE_Message_Queue features are not supported with
this implementation, including:
* open
method have different signatures.
* dequeue_head
*requires* that the ACE_Message_Block
pointer argument point to an ACE_Message_Block
that was
allocated by the caller.
* peek_dequeue_head
.
* ACE_Message_Queue_Iterators
.
* No flow control.
ACE_Message_Queue_NT (
size_t max_threads = ACE_Message_Queue_Base::DEFAULT_HWM
);
virtual int open (
size_t max_threads = ACE_Message_Queue_Base::DEFAULT_HWM
);
virtual int close (void);
virtual ~ACE_Message_Queue_NT (void);
virtual int enqueue_tail (
ACE_Message_Block *new_item,
ACE_Time_Value *timeout = 0
);
virtual int enqueue (
ACE_Message_Block *new_item,
ACE_Time_Value *timeout = 0
);
ACE_Message_Block *
at the end of the queue.
Returns -1 on failure, else the number of items still on the
queue.
virtual int dequeue_head (
ACE_Message_Block *&first_item,
ACE_Time_Value *timeout = 0
);
virtual int dequeue (
ACE_Message_Block *&first_item,
ACE_Time_Value *timeout = 0
);
ACE_Message_Block *
at the head of the
queue. Returns -1 on failure, else the number of items still on
the queue.
virtual int is_full (void);
virtual int is_empty (void);
virtual size_t message_bytes (void);
virtual size_t message_length (void);
virtual size_t message_count (void);
virtual void message_bytes (size_t new_size);
virtual void message_length (size_t new_length);
virtual size_t max_threads (void);
virtual int deactivate (void);
errno
==
ESHUTDOWN. Returns WAS_INACTIVE if queue was inactive before the
call and WAS_ACTIVE if queue was active before the call.
virtual int activate (void);
virtual int deactivated (void);
deactivated_
is enabled.
virtual void dump (void) const;
virtual ACE_HANDLE completion_port (void);
ACE_ALLOC_HOOK_DECLARE;
size_t max_cthrs_;
size_t cur_thrs_;
size_t cur_bytes_;
size_t cur_length_;
size_t cur_count_;
ACE_Thread_Mutex lock_;
int deactivated_;
ACE_HANDLE completion_port_;
inline ACE_UNIMPLEMENTED_FUNC (
void operator= (const ACE_Message_Queue_NT &)
);