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

在派生类中重写时,将指定的源块链接到此 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

在派生类中重写时,从此 ITarget 块取消链接指定的源块。

virtual void unlink_source(_Inout_ ISource<T>* _PSource) = 0;

参数

_PSource
从此 ITarget 块取消链接的 ISource 块。

备注

不应在 ITarget 块上直接调用此函数。 应使用 ISource 块上的 unlink_targetunlink_targets 方法断开块,这将调用相应目标上的 unlink_source 方法。

在派生类中重写时,从此 ITarget 块取消链接所有源块。

virtual void unlink_sources() = 0;

另请参阅

并发命名空间
ISource 类