ITarget 类
ITarget
类是所有目标块的接口。 目标块使用 ISource
块提供给它们的消息。
语法
template<class T>
class ITarget;
参数
T
目标块接受的消息中的有效负载的数据类型。
成员
公共 Typedef
名称 | 描述 |
---|---|
filter_method |
块使用的任何方法的签名,该块返回一个 bool 值,以确定是否应接受提供的消息。 |
type |
T 的类型别名。 |
公共构造函数
名称 | 描述 |
---|---|
~ITarget 析构函数 | 销毁 ITarget 对象。 |
公共方法
名称 | 描述 |
---|---|
propagate | 在派生类中重写时,将源块的消息异步传递到此目标块。 |
发送 | 在派生类中重写时,将消息同步传递给目标块。 |
supports_anonymous_source | 在派生类中重写时,根据消息块是否接受未链接到它的源提供的消息返回 true 或 false。 如果重写的方法返回 true ,则目标不能推迟所提供的消息,因为稍后被推迟消息的能耗要求源在其源链接注册表中已标识。 |
受保护方法
名称 | 描述 |
---|---|
link_source | 在派生类中重写时,将指定的源块链接到此 ITarget 块。 |
unlink_source | 在派生类中重写时,从此 ITarget 块取消链接指定的源块。 |
unlink_sources | 在派生类中重写时,从此 ITarget 块取消链接所有源块。 |
备注
有关详细信息,请参阅异步消息块。
继承层次结构
ITarget
要求
标头: agents.h
命名空间: 并发
~ITarget
销毁 ITarget
对象。
virtual ~ITarget();
link_source
在派生类中重写时,将指定的源块链接到此 ITarget
块。
virtual void link_source(_Inout_ ISource<T>* _PSource) = 0;
参数
_PSource
要链接到此 ITarget
块的 ISource
块。
备注
不应在 ITarget
块上直接调用此函数。 块应使用 ISource
块上的 link_target
方法连接在一起,这将在相应的目标上调用 link_source
该方法。
propagate
在派生类中重写时,将源块的消息异步传递到此目标块。
virtual message_status propagate(
_Inout_opt_ message<T>* _PMessage,
_Inout_opt_ ISource<T>* _PSource) = 0;
参数
_PMessage
指向 message
对象的指针。
_PSource
指向提供消息的源块的指针。
返回值
message_status 指示目标决定对消息执行的操作。
备注
如果 _PMessage
或 _PSource
参数为 NULL
,则引发 invalid_argument 异常。
发送
在派生类中重写时,将消息同步传递给目标块。
virtual message_status send(
_Inout_ message<T>* _PMessage,
_Inout_ ISource<T>* _PSource) = 0;
参数
_PMessage
指向 message
对象的指针。
_PSource
指向提供消息的源块的指针。
返回值
message_status 指示目标决定对消息执行的操作。
备注
如果 _PMessage
或 _PSource
参数为 NULL
,则引发 invalid_argument 异常。
在消息初始化之外使用 send
方法并在网络中传播消息很危险,可能导致死锁。
返回 send
时,消息已被接受并传输到目标块,或者目标已拒绝。
supports_anonymous_source
在派生类中重写时,根据消息块是否接受未链接到它的源提供的消息返回 true 或 false。 如果重写的方法返回 true
,则目标不能推迟所提供的消息,因为稍后被推迟消息的能耗要求源在其源链接注册表中已标识。
virtual bool supports_anonymous_source();
返回值
如果块可以接受来自未链接到它的源的消息,则为 true
,否则为 false
。
unlink_source
在派生类中重写时,从此 ITarget
块取消链接指定的源块。
virtual void unlink_source(_Inout_ ISource<T>* _PSource) = 0;
参数
_PSource
从此 ITarget
块取消链接的 ISource
块。
备注
不应在 ITarget
块上直接调用此函数。 应使用 ISource
块上的 unlink_target
或 unlink_targets
方法断开块,这将调用相应目标上的 unlink_source
方法。
unlink_sources
在派生类中重写时,从此 ITarget
块取消链接所有源块。
virtual void unlink_sources() = 0;