为了使用多重地址空间功能,需要使用不同的代码生成设置。
这些设置由以下属性控制:
- C_CG::Configuration::MultipleAddressSpaces
如果将此布尔属性设置为
Checked,那么 IBM® Rational® Rhapsody® 将使用在使用多重地址空间功能时所需的代码生成设置。此属性的缺省值是 Cleared,因此必须更改此值才能启用此功能。
为了能够接收来自其他地址空间的事件,反应对象必须发布用于标识该对象的名称。在类级别设置的下面这两个属性用于此用途:
- C_CG::Class::PublishedName:这是一个名称,用于标识反应对象以便向其发送分布式事件。
如果类只有一个反应实例,那么此属性的值用于标识对象。
如果类有多个反应实例并且已对每个实例进行显式命名,那么用于标识反应对象的名称是您对该对象指定的名称,而不是此属性的值。
对于多重性情况(未以显式方式对各个对象进行命名)而言,用于标识反应对象的名称是发布的名称与对象下标的并置,例如,如果 PublishedName 属性的值为 truck,那么对象将被标识为 truck[0] 和 truck[1] 等等。
- C_CG::Class::PublishInstance
此布尔属性指示是否将对象发布为能够接收分布式事件的反应实例。
另外,在发送事件时,可以使用在配置级别设置的以下属性来指定特定的目标地址空间,如用于跨地址空间发送事件的 API所述:
- C_CG::Configuration::AddressSpaceName
如果您想将事件发送到特定地址空间中的反应对象,请使用此属性的值作为前缀以
addressSpaceName::publishedNameOfReactiveObject
格式指定地址空间。此属性的缺省值是相关对象的名称。
如果要跨地址空间发送的事件没有自变量或者只将基本类型(例如整数或字符)用作自变量,那么设置上述属性已足够。但是,如果要发送的事件包括对象作为自变量,那么还必须在事件级别设置下列属性。
- C_CG::Event::SerializationFunction:要使用的序列化函数(由用户提供)的名称
- C_CG::Event::UnserializationFunction:要使用的反序列化函数(由用户提供)的名称
要了解关于这两个由用户提供的函数的必需结构,请参阅序列化函数和反序列化函数。