RSiOpen 或 RSiOpenx 子例程
用途
初始化远程主机的 RSI 接口。
库
RSI 库 (libSpmi.a)
语法
#include sys/Rsi.h int RSiOpen (rhandle, wait, bufsize, hostID, feed_callb,
resy_callb, excp_callb)
RSiHandle rhandle;
int wait;
int bufsize;
char *hostID;
int (*feed_callb)();
int (*resy_callb)();
int (*excp_callb)();int RSiOpenx (rhandlex, wait, bufsize, hostID, feed_callb,
resy_callb, excp_callb)
RSiHandle rhandlex;
int wait;
int bufsize;
char *hostID;
int (*feed_callb)();
int (*resy_callb)();
int (*excp_callb)();描述
RSiOpen 或 RSiOpenx 子例程执行以下操作:
- 将发出数据使用者程序建立为特定主机上的 Xmservd 守护程序已知的数据使用者。 子例程通过向主机发送 are_you_hare 包来执行此操作。
- 初始化一个 RSI 句柄以供数据使用者程序后续使用。
该子程序是AIX®性能工具箱许可产品的一部分。
参数
子例程的参数为:
- 处理
- 必须指向RSiHandleStruct数组中的一个元素,该元素由之前的RSiInit调用返回。 如果子例程成功,那么该结构已初始化并准备用作后续 RSI 接口子例程调用的句柄。
- 汉德莱克斯
- 必须指向 RSiHandlex 句柄的元素,该句柄先前由 RSiOpenx 子例程初始化。
- WAIT
- 使用请求/响应函数时,必须指定 RSi 接口等待响应的超时 (以毫秒计)。 在 LAN 上,此参数的合理值为 100 毫秒。 如果在指定的等待时间之后未接收到响应,那么库子例程将重试接收操作,直到等待时间经过 5 倍之后才返回超时指示。 等待时间必须为零或更多毫秒。
- 布夫斯姆
- 指定要用于构造网络信息包的最大缓冲区大小。 此大小必须至少为 4,096 个字节。 缓冲区大小确定程序可以接收的最大包长度,并设置在一个 数据订阅源 包中可以接收的数据值的数量限制。 将缓冲区大小设置为大于 Xmservd 守护程序的缓冲区大小是没有意义的,因为这两个守护程序都必须能够处理包。 如果您需要大量值,那么可以使用 Xmservd 的命令行参数 -b 来将其缓冲区大小增加到 16,384 字节。
- hostID
- 必须是一个字符数组,其中包含其 Xmservd 守护程序是您要与之交谈的远程主机的标识。 主机标识的前一个字符 (最多为第一个空格) 将用作主机名。 完整主机标识存储在 RSiHandle 字段 longname 中,并且可能包含有助于用户识别所使用主机的任何描述。 主机名可以采用长格式 (包括域名) ,也可以采用短格式。
- 数据装入调用
- 必须是一个指向函数的指针,该函数在从 Xmservd 守护程序接收到 数据订阅源 个包时处理这些包。 调用此回调函数时,将向其传递三个参数,如以下信息中所述。
- resy_callb
- 必须是一个指向函数的指针,该函数在从 Xmservd 守护程序接收到 i_am_back 个包时处理这些包。 调用此回调函数时,将向其传递三个参数,如以下信息中所述。
- excp_callb
- 必须为 NULL 或指向函数的指针,该函数在从 Xmservd 守护程序接收到 except_rec 包时处理这些包。 如果传递了 NULL 指针,那么应用程序不会接收到 except_rec 消息。 调用此回调函数时,将向其传递三个参数,如以下信息中所述。 此自变量始终覆盖任何先前 RSiInvite 或 RSiInvitex 子例程, RSiOpen 或 RSiOpenx 子例程调用的相应自变量,并且自身可被后续执行的任一子例程所覆盖。 通过这种方式,您的应用程序可以开启和关闭异常监视。 对于 RSiOpen 或 RSiOpenx 调用,要覆盖由先前打开的调用指定的异常处理,必须首先使用 RSiClose 或 RSiClosex 子例程调用来关闭连接。
类型为 包 * 的指针,指向包含接收到的包的输入缓冲区。 在回调函数中,始终使用此指针而不是 RSiHandle 或 RSiHandlex 结构中的指针。
类型为 struct sockaddr_in * 或 struct sockadd_in 6 * 的指针,指向源主机的 IP 地址。
返回值
如果成功,子例程将返回零并初始化类型为 RSiHandle 或 RSiHandlex 的数组元素,这些元素由 rhandle 或 rhandlex指向。 如果发生错误,那么会将错误文本放在外部字符数组 RSiEMsg 中,并且子例程会返回负值。
错误代码
所有远程统计信息接口 (RSI) 子例程都使用外部变量来提供错误信息。 为了访问这些变量,应用程序必须定义下列外部变量:
- extern charRSiEMsg[];
- extern intRSiErrno;
如果子例程未返回错误,那么 RSiErrno 变量将设置为 RSiOkay ,并且 RSiEMsg 字符数组为空。 如果检测到错误,RSiErrno变量将根据枚举RSiErrorType定义返回一个错误代码。
文件
| 项 | 描述 |
|---|---|
| /usr/include/sys/Rsi.h | 声明应用程序可以用来访问 RSI 的子例程,数据结构,句柄以及宏。 |