ACE_Dynamic_Message_Queue
class or any other class which needs to manage the priorities
of a collection of ACE_Message_Block
s dynamically.
#include <ace/Message_Block.h>
class ACE_Dynamic_Message_Strategy {
public:
enum Priority_Status{ PENDING = 0x01, LATE = 0x02, BEYOND_LATE = 0x04, ANY_STATUS = 0x07 };ACE_Dynamic_Message_Strategy ( u_long static_bit_field_mask, u_long static_bit_field_shift, u_long dynamic_priority_max, u_long dynamic_priority_offset );
virtual ~ACE_Dynamic_Message_Strategy (void);
Priority_Status priority_status ( ACE_Message_Block &mb, const ACE_Time_Value &tv );
u_long static_bit_field_mask (void);
void static_bit_field_mask (u_long);
u_long static_bit_field_shift (void);
void static_bit_field_shift (u_long);
u_long dynamic_priority_max (void);
void dynamic_priority_max (u_long);
u_long dynamic_priority_offset (void);
void dynamic_priority_offset (u_long);
virtual void dump (void) const;
protected:
virtual void convert_priority ( ACE_Time_Value &priority, const ACE_Message_Block &mb ) = 0;
u_long static_bit_field_mask_;
u_long static_bit_field_shift_;
u_long dynamic_priority_max_;
u_long dynamic_priority_offset_;
ACE_Time_Value max_late_;
ACE_Time_Value min_pending_;
ACE_Time_Value pending_shift_;
};
ACE_Dynamic_Message_Strategy (
u_long static_bit_field_mask,
u_long static_bit_field_shift,
u_long dynamic_priority_max,
u_long dynamic_priority_offset
);
virtual ~ACE_Dynamic_Message_Strategy (void);
Priority_Status priority_status (
ACE_Message_Block &mb,
const ACE_Time_Value &tv
);
u_long static_bit_field_mask (void);
void static_bit_field_mask (u_long);
u_long static_bit_field_shift (void);
void static_bit_field_shift (u_long);
u_long dynamic_priority_max (void);
void dynamic_priority_max (u_long);
u_long dynamic_priority_offset (void);
void dynamic_priority_offset (u_long);
virtual void dump (void) const;
schmidt@cs.wustl.edu