NAME

ACE_Message_Queue_NT - Message Queue implementation using IO completion port on NT.

SYNOPSIS

#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 &) ); };

DESCRIPTION

Implementation of a strip-downed ACE_Message_Queue using NT's IO completion port mechanism.

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.

Initialization and termination methods.

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);

Enqueue and dequeue methods.

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
    );

Check if queue is full/empty.

virtual int is_full (void);

virtual int is_empty (void);

Queue statistic methods (transient.)

virtual size_t message_bytes (void);

virtual size_t message_length (void);

virtual size_t message_count (void);

Manual changes to these stats (used when queued message blocks

change size or lengths).
virtual void message_bytes (size_t new_size);

virtual void message_length (size_t new_length);

virtual size_t max_threads (void);

Activation control methods.

virtual int deactivate (void);

virtual int activate (void);

virtual int deactivated (void);

Notification hook.

virtual void dump (void) const;

virtual ACE_HANDLE completion_port (void);

ACE_ALLOC_HOOK_DECLARE;

Internal states.

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_;

Disallow these operations.

inline ACE_UNIMPLEMENTED_FUNC (
    void operator= (const ACE_Message_Queue_NT &)
    );

AUTHOR

Doug Schmidt

LIBRARY

ace