📄 block.h
字号:
// block.h,v 1.1 1999/01/24 21:06:55 jcej Exp
#ifndef BLOCK_H
#define BLOCK_H
#include "work.h"
/*
We derive a Message_Block from ACE_Message_Block and teach it about
our Unit_Of_Work object. When our task's svc() method pulls a block
out of the queue, it can then invoke the virtual methods of the work
object safely. In this implementation we've also retained the
original ACE_Message_Block functionallity so that we can use the
underlying ACE_Data_Block objects to store data other than our
Unit_Of_Work.
*/
class Message_Block : public ACE_Message_Block
{
public:
typedef ACE_Message_Block inherited;
/*
Construct our underlying ACE_Message_Block with the requested
data size and initialize our Unit_Of_Work pointer with the
given object instance. Note that this Message_Block instance
now assumes ownership of the Unit_Of_Work and will delete it
when the Message_Block is deleted.
*/
Message_Block( size_t size, Unit_Of_Work * _data )
: inherited(size), data_(_data)
{
ACE_DEBUG ((LM_DEBUG, "(%P|%t) Message_Block ctor 0x%x for 0x%x\n", (void *) this, data_));
}
~Message_Block(void)
{
ACE_DEBUG ((LM_DEBUG, "(%P|%t) Message_Block dtor 0x%x for 0x%x\n", (void *) this, data_));
delete data_;
}
/*
Return the Unit_Of_Work so that the task can invoke methods on
it.
*/
Unit_Of_Work * data(void)
{
return this->data_;
}
protected:
Unit_Of_Work * data_;
/*
Disallow these very dangerous operations.
If we were to copy a Message_Block object then the data_
pointer would get copied and we would eventually end up
deleting the same object multiple times! That's not good. By
preventing the copy, we can avoid this.
*/
Message_Block &operator= (const Message_Block &);
Message_Block (const Message_Block &);
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -