ITarget 类
本文内容
ITarget
类是所有目标块的接口。 目标块使用 ISource
块提供给它们的消息。
template<class T>
class ITarget;
T
目标块接受的消息中的有效负载的数据类型。
名称 | 描述 |
---|---|
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
对象。
virtual ~ITarget();
在派生类中重写时,将指定的源块链接到此 ITarget
块。
virtual void link_source(_Inout_ ISource<T>* _PSource) = 0;
_PSource
要链接到此 ITarget
块的 ISource
块。
不应在 ITarget
块上直接调用此函数。 块应使用 ISource
块上的 link_target
方法连接在一起,这将在相应的目标上调用 link_source
该方法。
在派生类中重写时,将源块的消息异步传递到此目标块。
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
时,消息已被接受并传输到目标块,或者目标已拒绝。
在派生类中重写时,根据消息块是否接受未链接到它的源提供的消息返回 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_target
或 unlink_targets
方法断开块,这将调用相应目标上的 unlink_source
方法。
在派生类中重写时,从此 ITarget
块取消链接所有源块。
virtual void unlink_sources() = 0;