31.4.1. acestl::message_queue_sequence, 版本1

2013-10-07 00:33:54 · 作者: · 浏览: 63

31.4.1. acestl::message_queue_sequence, 版本1

STLSoft的子项目ACESTL包括若干组件,用于将ACE适配到STL(以提高ACE组件的易用性)。acestl::message_queue_sequence就是对ACE_Message_Queue进行实例适配的类模板。因为这个组件正在频繁地更新,所以我打算施展我常用的伎俩,将实现进展过程拿给你看。不过还好,不同于其它章节里使用的材料,acestl::message_queue_sequence的新版本都仅以添加代码的方式修改旧版本,这好歹让我能把这个话题的篇幅控制在40页以内。清单31.7展示了其定义的第一个版本。

清单 31.7. message_queue_sequence的定义

Code View: Scroll / Show All
// In namespace acestl
template <ACE_SYNCH_DECL>
class message_queue_sequence
{
public: // Member Types
typedef char                                  value_type;
typedef ACE_Message_Queue<ACE_SYNCH_USE>      sequence_type;
typedef message_queue_sequence<ACE_SYNCH_USE> class_type;
typedef size_t                                size_type;
class                                         iterator;
public: // Construction
explicit message_queue_sequence(sequence_type& mq);
public: // Iteration
iterator begin();
iterator end();
public: // Attributes
size_type  size() const;
bool       empty() const;
private: // Member Variables
sequence_type&  m_mq;
private: // Not to be implemented
message_queue_sequence(class_type const&);
class_type& operator =(class_type const&);
};

看过前面各种序列之后,这里已经没什么可说的了;有趣内容的都在迭代器类中。注意成员类型value_type定义为char,这表示size()方法返回队列的字节数,而[begin(), end())定义的区间也是基于字节。此外没有关于消息块的方法。

【责任编辑:董书 TEL:(010)68476606】

回书目   上一节   下一节