ImqObject C++ 类

这个类是抽象的。 当此类对象被销毁时,它会自动关闭,其 ImqQueueManager 连接也会被切断。

图 1。 ImqObject 类
显示 ImqObject 类及其父类 ImqError的 Booch 类图。

类属性

行为 (behavior)
控制隐式打开的行为。
imq_impl_open ( 8L )
允许隐式打开。 这是缺省值。

对象属性

变更日期
变更日期。 此属性是只读的。
变更时间
变更时间。 此属性是只读的。
备用用户标识
备用用户标识,最多为 MQ_USER_ID_LENGTH 字符。 初始值为空字符串。
备用安全标识
备用安全标识。 长度为 MQ_SECURITY_ID_LENGTH 的二进制值 (MQBYTE40)。 初始值为 MQSID_NONE。
关闭选项
关闭对象时应用的选项。 初始值是 MQCO_NONE。 在隐式重新打开操作期间将忽略此属性,其中始终使用值 MQCO_NONE。
连接参考
指向 ImqQueueManager 对象的引用,该对象提供与(本地)队列管理器的所需连接。 对于 ImqQueueManager 对象,就是对象本身。 初始值为零。
注: 请勿将此与用于标识指定队列的队列管理器 (可能是远程队列) 的 队列管理器名称 混淆。
描述
队列管理器,队列,名称列表或进程的描述性名称 (最多 64 个字符)。 此属性是只读的。
name
队列管理器,队列,名称列表或进程的名称 (最多 48 个字符)。 初始值为空字符串。 在 打开 之后,模型队列的名称将更改为生成的动态队列的名称。
注意: ImqQueueManager 可以没有名字,代表默认的队列管理器。 成功 打开后,名称将更改为实际队列管理器。 ImqDistributionList 是动态的,必须为空。
下一个受管对象
这是此类的下一个对象,没有特殊顺序,具有与此对象相同的 连接引用 。 初始值为零。
打开选项
打开对象时适用的选项。 初始值为 MQOO_INQUIRE。 有两种方法可以设置相应的值:
  1. 请勿设置 open options ,也不要使用 open 方法。 IBM® MQ 会自动调整 打开选项 ,并根据需要自动打开,重新打开和关闭对象。 这可能会导致不必要的重新打开操作,因为 IBM MQ 使用 openFor 方法,并且仅以递增方式添加 open options
  2. 在使用导致 MQI 调用的任何方法之前设置 open options (请参阅 C++ 和 MQI 交叉引用 )。 这可确保不会发生不必要的重新打开操作。 如果可能发生任何潜在的重新打开问题,请显式设置打开选项 (请参阅 重新打开 )。

    如果使用 open 方法,那么 必须 确保 open options 首先适用。 但是,使用 open 方法不是必需的; IBM MQ 仍然表现出与案例 1 相同的行为,但在这种情况下,行为是有效的。

零不是有效值; 请在尝试打开对象之前设置相应的值。 这可以通过以下两种方式实现 setOpenOptions ( lOpenOptions )后接open ( ),或 openFor ( lRequiredOpenOption )。
注:
  1. MQOO_OUTPUT 在分发列表的 open 方法期间替换为 MQOOO_INQUIRE ,因为 MQOO_OUTPUT 是此时唯一有效的 open 选项 。 但是,最好始终在使用 open 方法的应用程序中显式设置 MQOO_OUTPUT。
  2. 如果要使用类的 已解析队列管理器名称已解析队列名称 属性,请指定 MQOO_RESOLVE_NAMES。
打开状态
对象是打开 (TRUE) 还是关闭 (FALSE)。 初始值为 FALSE。 此属性是只读的。
先前受管对象
此类的先前对象 (无特定顺序) 与此对象具有相同的 连接引用 。 初始值为零。
队列管理器标识
队列管理器标识。 此属性是只读的。

构造函数

ImqObject( );
缺省构造函数。
ImqObject( const & ImqObject object );
复制构造函数。 打开状态 将为 FALSE。

类方法 (public)

静态 MQLONG 行为 ();
返回 行为
void setBehavior( const MQLONG behavior = 0 );
设置 行为

对象方法 (公用)

void 运算符 = ( const ImqObject & 对象 );
必要时执行关闭,并从 对象复制实例数据。 打开状态 将为 FALSE。
ImqBoolean alterationDate( ImqString & amp;日期 );
提供 变更日期的副本。 如果成功,将返回 TRUE。
ImqString alterationDate( );
返回 更改日期 ,而不指示任何可能的错误。
ImqBoolean alterationTime( ImqString & amp;时间 );
提供 更改时间的副本。 如果成功,将返回 TRUE。
ImqString alterationTime( );
返回 更改时间 ,而不指示任何可能的错误。
ImqString ( ) const ; alternateUserId ( ) const ;
返回 备用用户标识的副本。
ImqBoolean ( const char * id ); setAlternateUserId ( const char * id );
设置 备用用户标识。 仅当 打开状态 为 FALSE 时,才能设置 备用用户标识 。 如果成功,此方法将返回 TRUE。
ImqBinary alternateSecurityId( ) const;
返回 备用安全标识 的副本。
ImqBoolean setAlternateSecurityId( const ImqBinary & token );
设置 备用安全标识。 仅当 打开状态 为 FALSE 时,才能设置 备用安全标识token 的数据长度必须为零或 MQ_SECURITY_ID_LENGTH。 如果成功,将返回 TRUE。
ImqBoolean setAlternateSecurityId( const MQBYTE* token = 0);
设置 备用安全标识token 可以为零,这与指定 MQSID_NONE 相同。 如果 token 非零,那么它必须寻址二进制数据的 MQ_SECURITY_ID_LENGTH 字节。 使用预定义值 (例如 MQSID_NONE) 时,可能需要进行强制类型转换以确保签名匹配; 例如, (MQBYTE *) MQSID_NONE。

仅当 打开状态 为 TRUE 时,才能设置 备用安全标识 。 如果成功,将返回 TRUE。

ImqBoolean setAlternateSecurityId( const unsigned char * id = 0);
设置 备用安全标识
ImqBoolean close ();
打开状态 设置为 FALSE。 如果成功,将返回 TRUE。
MQLONG closeOptions () const ;
返回 close 选项
void setCloseOptions ( const MQLONG options );
设置 关闭选项
ImqQueueManager * ( ) const ; connectionReference ( ) const ;
返回 连接引用
无效 setConnectionReference( ImqQueueManager 和 经理 );
设置 连接引用
无效 setConnectionReference ( ImqQueueManager * manager = 0 );
设置 连接引用
虚拟 ImqBoolean 描述 ( ImqString & 描述 ) = 0;
提供 描述的副本。 如果成功,将返回 TRUE。
ImqString description ();
返回 description 的副本,而不指示任何可能的错误。
虚拟 ImqBoolean ( ImqString & );
提供 name的副本。 如果成功,将返回 TRUE。
ImqString name ();
返回 name 的副本,而不指示任何可能的错误。
ImqBoolean setName ( const char * name = 0);
设置 名称。 仅当打开状态为 FALSE 时才可以设置名称,并且对于 ImqQueueManager, 仅当连接状态为 FALSE 时才可以设置名称。 如果成功,将返回 TRUE。
ImqObject * ( ) const ; nextManagedObject ( ) const ;
返回 下一个受管对象
ImqBoolean open ();
通过在其他属性中使用 打开选项名称,根据需要打开对象,将 打开状态 更改为 TRUE。 此方法使用连接引用信息和 ImqQueueManager连接方法(如有必要)来确保 ImqQueueManager连接状态为 TRUE。 它返回 打开状态
ImqBoolean openFor ( const MQLONG required-options = 0);
尝试确保对象是使用 open options打开的,或者使用 open options 来保证 required-options 参数值隐含的行为。
如果 required-options 为零,那么需要输入,并且任何输入选项都足够。 因此,如果 打开选项 已包含下列其中一项:
  • MQOO_INPUT_AS_Q_DEF
  • MQOO_INPUT_SHARED
  • MQOO_INPUT_EXCLUSIVE

打开选项 已令人满意并且未更改; 如果 打开选项 尚未包含任何这些选项,那么将在 打开选项中设置 MQOO_INPUT_AS_Q_DEF。

如果 required-options 非零,那么会将必需选项添加到 open options ; 如果 required-options 是这些选项中的任何一个,那么将重置其他选项。

如果更改了任何 打开选项 并且该对象已打开,那么将临时关闭该对象并重新打开以调整 打开选项

如果成功,将返回 TRUE。 成功指示对象已使用相应的选项打开。

MQLONG openOptions () const ;
返回 open options
ImqBoolean ( const MQLONG options ); setOpenOptions ( const MQLONG options );
设置 打开选项。 仅当 打开状态 为 FALSE 时,才能设置 打开选项 。 如果成功,将返回 TRUE。
ImqBoolean openStatus () const ;
返回 打开状态
ImqObject * ( ) const ; previousManagedObject ( ) const ;
返回 先前受管对象
ImqBoolean queueManagerIdentifier( ImqString & id );
提供 队列管理器标识的副本。 如果成功,将返回 TRUE。
ImqString queueManagerIdentifier( );
返回 队列管理器标识 ,而不指示任何可能的错误。

对象方法 (protected)

虚拟 ImqBoolean closeTemporarily ();
在重新打开之前安全地关闭对象。 如果成功,将返回 TRUE。 此方法假定 打开状态 为 TRUE。
MQHCONN connectionHandle () const ;
返回与 连接引用关联的 MQHCONN。 如果没有 连接引用 ,或者如果未连接管理器,那么此值为零。
ImqBoolean 查询 ( 连接 MQLONG 内部属性, MQLONG & );
返回整数值,其索引为 MQIA_ * 值。 如果发生错误,该值将设置为 MQIAV_UNDEFINED。
ImqBoolean 查询 ( 连接 MQLONG char-属性, char * & 缓冲区, 连接大小 (t) 长度 );
返回字符串,其索引为 MQCA_ * 值。
注: 这两种方法都仅返回单个属性值。 如果需要具有多个值的 snapshot ,并且这些值在即时情况下彼此一致,那么 IBM MQ C++ 不会提供此工具,并且您必须使用带有相应参数的 MQINQ 调用。
虚拟空格 openInformationDisperse ();
在 MQOPEN 调用之后,立即从 MQOD 数据结构的变量部分分散信息。
ImqBooleanopenInformationPrepare ();
在 MQOPEN 调用之前,立即为 MQOD 数据结构的变量部分准备信息,如果成功,将返回 TRUE。
ImqBoolean set ( const MQLONG int-attrconst MQLONG value );
设置 IBM MQ 整数属性。
ImqBoolean set ( const MQLONG char-attrconst char * bufferconst size_t required-length );
设置 IBM MQ 字符属性。
无效 setNextManagedObject ( const ImqObject * object = 0 );
设置 下一个受管对象

注意: 仅当您确定此函数不会破坏受管对象列表时,才使用此函数。

无效 setPreviousManagedObject ( const ImqObject * object = 0 );
设置 先前受管对象

注意: 仅当您确定此函数不会破坏受管对象列表时,才使用此函数。

对象数据 (受保护)

MQHOBJ ohobj
IBM MQ 对象句柄 (仅当 打开状态 为 TRUE 时有效)。
MQOD omqod
嵌入式 MQOD 数据结构。 为此数据结构分配的存储量是 MQOD 版本 2 所需的存储量。 检查版本号 (omqod.Version) 并访问其他字段,如下所示:
MQOD_VERSION_1
可以访问 omqod 中的所有其他字段。
MQOD_VERSION_2
可以访问 omqod 中的所有其他字段。
MQOD_VERSION_3
omqod.pmqod 是一个指向动态分配的较大 MQOD 的指针。 无法访问 omqod 中的其他字段。 可以访问 omqod.pmqod 所寻址的所有字段。
注: omqod.pmqod.Version 可以小于 omqod.Version,指示 IBM MQ MQI client 具有比 IBM MQ 服务器更多的功能。

原因码

  • mqrc_attribute_locked
  • mqrc_inconsistent_object_state
  • mqrc_noo_connection_reference
  • MQRC_STORAGE_NOT_AVAILABLE
  • mqrc_reopen_saved_context_err
  • (来自 MQCLOSE 的原因码)
  • (来自 MQCONN 的原因码)
  • (来自 MQINQ 的原因码)
  • (来自 MQOPEN 的原因码)
  • (来自 MQSET 的原因码)