tuxedo服务器端ATMI

更新时间:2024-03-25 12:58:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

北京奥德计算机技术有限公司 第 -1- 页 共 11 页

Tuxedo服务器端ATMI

说明: 本文档描述TUXEDO服务器端ATMI接口调用函数,注意一个service函数能作为

client端使用所有客户端ATMI。 1. Server端ATMI:

(1) void tpservice(TPSVCIBFO *svcinfo)

功 能: 当前错误代号。 输入参数: 输出参数: 返 回:

(2) char *tpstrerror(int tperrno)

功 能: 获取错误信息。 输入参数: tperrno 错误代号。 输出参数:

返 回: 错误信息字符串指针。 (3) char *tpalloc(char *type, char *subtype, long size)

功 能: 申请内存缓冲区。 输入参数: type 缓冲区类型。 subtype 缓冲区子类型。 size 缓冲区长度。 输出参数:

返 回: 缓冲区指针。 如果失败,则返回空指针。 (4) char *tprealloc(char *bufptr, long size)

功 能: 修改已分配缓冲区长度。 输入参数: bufptr 已分配缓冲区指针。 size 新缓冲区长度。 输出参数:

返 回: 新缓冲区指针。 如果失败,则返回空指针。 (5) void tpfree(char *bufptr)

功 能: 释放已分配缓冲区。 输入参数: bufptr 已分配缓冲区指针。 输出参数: 返 回: (6) int tpchkauth()

功 能: 获取安全认证级别。 输入参数: 输出参数:

返 回: TPNOAUTH 不需要密码。 TPSYSAUTH 需要密码。 TPAPPAUTH 需要密码及应用特别信息。 TPACLAUTH 访问控制表处于活动状态。

软件开发中心:陈首会 13-3-26

北京奥德计算机技术有限公司 第 -2- 页 共 11 页

其他 失败。 (7) int tpinit(TPINIT *tpinfo)

功 能: 初始化一个应用。 输入参数: tpinfo 初始化信息结构。该结构定义如下: struct { char usrname[32]; (用户名,32字节) char cltname[32]; (终端名称,32字节) char passwd[32]; (密码,前8字节有意义) char grpname[32]; (组名,32字节) long flags; (通知类型及系统访问方式标志) TPU_SIG 选择信号通知。 TPU_DIP 投入式通知(用tpchkunsol()检

查)。

TPU_IGN 忽略通知。 TPSA_FASTPATH 系统快捷访问。

TPSA_PROTECTED 系统保护访问。

long datalen; (应用特别信息长度) long data; (应用特别信息索引) } 输出参数:

返 回: -1 失败。 其他 成功。 (8) int tpterm()

功 能: 结束应用。 输入参数: 输出参数:

返 回: -1 失败。 其他 成功。 (9) int tpacall(char *service, char *bufptr, long length, long flags)

功 能: 发送服务请求。 输入参数: service 请求服务名称。 bufptr 发送缓冲区指针。 length 发送缓冲区长度(只有缓冲区类型为CARRAY时需要, 其他均为0)。 flags 标志: TPNOTRAN 交易模式下不调用。 TPNOREPLY 无返回。 TPNOBLOCK 延时不等待。 TPNOTIME 无超时。 TPSIGRSTRT 允许信号。 输出参数:

返 回: -1 失败。 其他 应用服务句柄。 (10) int tpgetreply(int *handle, char **bufpp, long *length, long flags)

软件开发中心:陈首会 13-3-26

北京奥德计算机技术有限公司 第 -3- 页 共 11 页

功 能: 获取服务返回。 输入参数: handle 由tpacall()返回的应用服务句柄。 flags 标志(与tpacall()相同,另增如下):

TPGETANY 忽略应用服务句柄,接收任意有效

返回。

TPNOCHANGE 接收与请求相同类型缓冲区返回。 输出参数: bufpp 接收返回信息缓冲区指针的指针。 length 返回信息长度指针。 返 回: -1 失败。 其他 成功。 (11) int tpcancel(int handle)

功 能: 取消一个交易(服务请求)。 输入参数: handle 由tpacall()返回的应用服务句柄。 输出参数:

返 回: -1 失败。 其他 成功。 (12) int tpcall(char *service, char *sbufp, long slength, char **rbufpp,

long *rlength, long flags)

功 能: 发送服务请求并接收应答返回。 输入参数: service 请求服务名称。 sbufp 发送缓冲区指针。 slength 发送缓冲区长度(只有缓冲区类型为CARRAY时需要, 其他均为0)。 flags 标志: TPNOTRAN 交易模式下不调用。 TPNOREPLY 无返回。 TPNOBLOCK 延时不等待。 TPNOTIME 无超时。 TPSIGRSTRT 允许信号。 输出参数: rbufpp 接收返回信息缓冲区指针的指针。 rlength 返回信息长度指针。 返 回: -1 失败。 其他 成功。 (13) int tpgprio()

功 能: 获取最后服务请求(发送或返回)优先级别。 输入参数: 输出参数:

返 回: -1 失败。 其他 最后服务优先级别。 (14) int tpsprio(int prio, long flags)

功 能: 设置下一个服务请求(发送或返回)优先级别。 输入参数: prio 优先级,1—100。 flags 标志: 0 默认优先级。

软件开发中心:陈首会 13-3-26

北京奥德计算机技术有限公司 第 -4- 页 共 11 页

输出参数:

返 回: -1 其他

TPABSOLUTE 失败。 成功。

由prio指定值。

2. 通知处理:

(1) int tpnotify(CLIENTID *clientid, char *data, long len, long flags)

功 能: 向指定客户端发送一个通知。 输入参数: clientid 客户端编号。 data 要发送的通知信息指针。 len 发送信息长度(只有缓冲区类型为CARRAY时需要, 其他均为0)。 flags 标志: TPNOBLOCK 延时不等待。 TPNOTIME 无超时。 TPSIGRSTRT 允许信号。 TPACK 输出参数:

返 回: -1 失败。 其他 成功。 (2) int tpbroadcast(char *lmid, char *usrname, char *cltname, char *data,

long len, long flags)

功 能: 向一个或多个客户端发送一个通知。 输入参数: lmid 目标机器名。 usrname 目标用户名。 cltname 目标客户端名。 data 要发送的通知信息指针。 len 发送信息长度(只有缓冲区类型为CARRAY时需要, 其他均为0)。 flags 标志: TPNOBLOCK 延时不等待。 TPNOTIME 无超时。

TPSIGRSTRT 允许信号。

输出参数:

返 回: -1 失败。 其他 成功。 (3) int tpchkunsol()

功 能: 检查是否有通知。 输入参数: 输出参数:

返 回: -1 失败。 其他 通知数量。 (4) void *tpsetunsol(void(*myfunc) (char *data, long len, long flags))

功 能: 设置客户端自己的通知处理函数。

软件开发中心:陈首会 13-3-26

北京奥德计算机技术有限公司 第 -5- 页 共 11 页

输入参数: myfunc 输出参数: 返 回:

客户端自己的通知处理函数指针。

3. API缓冲区类型:

(1) STRING:

以’\\0’结束字符串; 变长文本或指针数据;

在不同机器和体系结构间传输加解密。

(2) CARRAY:

指定长度数组; 机器依赖数据; 传输不透明;

传输中需要指定长度; 传输中不加解密。

(3) FML,FML32:

可以用域名描述的数据,例如数据库表; 不传输未使用的域;

域名可以重复(称为第几重域,为处理简单明了起见,建议不要使用重复域,所有涉及第几重域的地方均使用第0重域)。 (4) VIEW,VIEW32:

C语言结构。

4. 交易处理

(1) int tpbegin(int timeout, long flags) 功 能: 开始一个全局交易。 输入参数: timeout 超时时间(秒,0--232-1)。

输出参数: 返 回: (2) int 功 能: 输入参数: 输出参数: 返 回: (3) void 功 能: 输入参数: 输出参数: 返 回: (4) int 功 能: 输入参数:

flags 0

-1 失败。 其他 成功。 tpcommit(long flags) 提交当前交易。 flags 0

-1 失败。 其他 交易控制字符。 tpabort(long flags) 中断当前交易。 flags 0

tpsuspend(TPTRANID *tranid, long flags) 挂起当前交易。 tranid 交易句柄。

软件开发中心:陈首会 13-3-26

北京奥德计算机技术有限公司 第 -6- 页 共 11 页

输出参数: 返 回: (5) int 功 能: 输入参数: 输出参数: 返 回: (6) int 功 能: 输入参数: 输出参数: 返 回: (7) int 功 能: 输入参数: 输出参数: 返 回:

(8) int 功 能: 输入参数: 输出参数: 返 回: (9) int 功 能: 输入参数: 输出参数: 返 回:

flags 0

-1 失败。 其他 成功。

tpresume(TPTRANID *tranid, long flags) 恢复挂起交易。 tranid 交易句柄。 flags 0

-1 失败。 其他 成功。 tpscmt(long flags) 设置交易控制字符。 flags 交易控制字符。

-1 失败。 其他 成功。 tpgetlev()

返回当前交易层次。

-1 失败。 0 不在交易中。 1 正在交易中。 tpopen()

打开服务组资源管理器。

-1 失败。 其他 成功。 tpclose()

关闭服务组资源管理器。

-1 失败。 其他 成功。

5. FML/FML32类型处理

FML/FML32域可用类型:short;char;long;float;double;string;carray。 包含头文件fml.h/fml32.h。 (1) FBFR *Falloc(FLDOCC F, FLDLEN V)

FBFR32 *Falloc32(FLDOCC32 F, FLDLEN32 V)

功 能: 申请FML/FML32类型缓冲区,但该缓冲区不能用于tpcall()和tpacall(),请参见函数tpalloc()。

软件开发中心:陈首会 13-3-26

北京奥德计算机技术有限公司 第 -7- 页 共 11 页

输入参数: F FML/FML32类型域的数量。 V 域长度(字节数)。 输出参数:

返 回: NULL 失败。 其他 成功。 (2) long *Fsizeof(FBFR *fbfr)

long *Fsizeof32(FBFR *fbfr)

功 能:返回FML/FML32类型缓冲区的长度。 输入参数: fbfr 指向FML/FML32类型缓冲区指针。 输出参数:

返 回: 缓冲区长度。 (3) long *Fneeded(FLDOCC F, FLDLEN V)

long *Fneeded32(FLDOCC32 F, FLDLEN32 V)

功 能: 获取FML/FML32类型缓冲区所需长度。 输入参数: F FML/FML32类型域的数量。 V 域长度(字节数)。 输出参数:

返 回:所需长度(字节数)。 (4) int Finit(FBFR *fbfr, FLDLEN buflen)

int Finit32(FBFR32 *fbfr, FLDLEN32 buflen)

功 能: 清除FML/FML32类型缓冲区,用于重新使用。 输入参数: fbfr 指向FML/FML32类型缓冲区指针。 buflen 新缓冲区长度。 输出参数:

返 回: -1 失败。

其他 成功。

(5) int Fadd(FBFR *fbfr, FLDID fieldid, char *value, FLDLEN len)

int Fadd32(FBFR32 *fbfr, FLDID32 fieldid, char *value, FLDLEN32 len) 功 能: 向FML/FML32类型缓冲区指定域赋值。 输入参数: fbfr 指向FML/FML32类型缓冲区指针。 fieldid 指定域索引。 value 所赋值的指针。 len 赋值长度。 输出参数:

返 回: -1 失败。

其他 成功。

(6) int Fchg(FBFR *fbfr, FLDID fieldid, int occ, char *value, FLDLEN len)

int Fchg32(FBFR32 *fbfr, FLDID32 fieldid, int occ, char *value, FLDLEN32 len)

功 能: 改变FML/FML32类型缓冲区指定域指定值。 输入参数: fbfr 指向FML/FML32类型缓冲区指针。 fieldid 指定域索引。 Occ 指定域第几重域(从0开始)。 value 所赋值的指针。

软件开发中心:陈首会 13-3-26

北京奥德计算机技术有限公司 第 -8- 页 共 11 页

len 赋值长度。 输出参数:

返 回: -1 失败。

其他 成功。

(7) int Fget(FBFR *fbfr, FLDID fieldid, int occ, char *value, FLDLEN

*maxlen) int Fget32(FBFR32 *fbfr, FLDID32 fieldid, int occ, char *value, FLDLEN32 *maxlen)

功 能: 从FML/FML32类型缓冲区中读取指定域指定值。 输入参数: fbfr 指向FML/FML32类型缓冲区指针。 fieldid 指定域索引。 Occ 指定域第几重域(从0开始)。 maxlen 读取值的最大长度。 输出参数: value 输出值缓冲区的指针。 返 回: -1 失败。

其他 成功。

(8) int Fcpy(FBFR *dest, FBFR *src)

int Fcpy32(FBFR32 *dest, FBFR32 *src) 功 能: 拷贝FML/FML32类型缓冲区。 输入参数: src 源地址。 输出参数: dest 目标地址。 返 回: -1 失败。

其他 成功。

(9) int Fprint(FBFR *fbfr)

int Fprint32(FBFR32 *fbfr)

功 能: 打印FML/FML32类型缓冲区内容到标准输出。 输入参数: fbfr 指向FML/FML32类型缓冲区指针。 输出参数: 返 回: (10) int Ffprint(FBFR *fbfr, FILE *iop)

int Ffprint32(FBFR32 *fbfr, FILE *iop)

功 能: 打印FML/FML32类型缓冲区内容到输出文件。 输入参数: fbfr 指向FML/FML32类型缓冲区指针。 iop 输出文件句柄。 输出参数: 返 回: (11) int Fextread(FBFR *fbfr, FILE *iop)

int Fextread32(FBFR *fbfr, FILE *iop)

功 能: 从输入文件读取FML/FML32类型缓冲区内容。 输入参数: iop 输入文件句柄。 输出参数: fbfr 指向FML/FML32类型缓冲区指针。 返 回: (12) int Fvftos(FBFR *fbfr, char *cstruct, char *view)

int Fvftos32(FBFR32 *fbfr, char *cstruct, char *view)

软件开发中心:陈首会 13-3-26

北京奥德计算机技术有限公司 第 -9- 页 共 11 页

功 能: 将FML/FML32类型缓冲区转换为VIEW/VIEW32类型缓冲区。 转换规则如下: 如果FML/FML32类型域名在VIEW/VIEW32类型结构中没有,忽 略该域;

如果FML/FML32类型某域重数比VIEW/VIEW32类型结构中多,忽略该域;

如果FML/FML32类型某域重数比VIEW/VIEW32类型结构中少,C结构相应域填空值。

输入参数: fbfr 指向FML/FML32类型缓冲区指针。 view VIEW/VIEW32类型结构名称。 输出参数: cstruct 指向C结构指针。 返 回: (13) int Fvstosf(FBFR *fbfr, char *cstruct, int mode, char *view)

int Fvstosf32(FBFR32 *fbfr, char *cstruct, int mode, char *view) 功 能:

输入参数: cstruct 指向C结构指针。 mode 转换模式:

FJOIN 转换C结构与VIEW/VIEW32类型结构都匹配的部分。

FOJOIN 在FJOIN模式基础上转换VIEW/VIEW32类型结构中不匹配的部分。

FUPDATE 在FJOIN模式基础上转换C结构与VIEW/VIEW32类型结构中不匹配的部分。

FCONCAT 转换C结构与VIEW/VIEW32类型结构的所有域。 view VIEW/VIEW32类型结构名称。

输出参数: fbfr 指向FML/FML32类型缓冲区指针。 返 回:

6. TX交易处理(开放标准交易处理)

(1) int tx_begin()

功 能: 开始一个两步式全局交易。 输入参数: 输出参数:

返 回: TX_OK 成功。 其他 失败。 (2) int tx_set_transaction_timeout(long timeout) 功 能: 设置交易超时时间。 输入参数: timeout 超时时间(秒,0--232-1)。

输出参数: 返 回: (3) int 功 能:

TX_OK 成功。 其他 失败。

tx_set_transaction_control(long control) 设置交易超时时间。

软件开发中心:陈首会 13-3-26

北京奥德计算机技术有限公司 第 -10- 页 共 11 页

输入参数: control

交易模式: TX_UNCHAINED TX_CHAINED

非联接模式。 联接模式。

输出参数: 返 回: (4) int 功 能: 输入参数: 输出参数: 返 回: (5) int 功 能: 输入参数: 输出参数: 返 回: (6) int 功 能: 输入参数:

输出参数: 返 回: (7) int 功 能: 输入参数: 输出参数: 返 回: (8) int 功 能: 输入参数: 输出参数:

TX_OK 成功。 其他 失败。 tx_commit()

提交两步式交易。

TX_OK 成功。 其他 失败。 tx_rollback() 回滚当前交易。

TX_OK 成功。 其他 失败。

tx_set_commit_return(long when_return) 设置交易控制何时返回。

when_return 交易控制返回时间安排:

TX_COMMIT_DECISION_LOGED 交易的第一步返回。 TX_COMMIT_COMPLETED 交易的第二步返回。

TX_OK 成功。 其他 失败。 tx_info(TXINFO *info) 获取当前交易信息。 info 交易信息结构。该结构定义如下: typedef TXINFO struct{ XID xid; COMMIT_RETURN when_return; TRANSACTION_CONTROL transaction_control; TRANSACTION_TIMEOUT transaction_timeout; TRANSACTION_STATE transaction_state; } 1 成功。 0 无当前交易。 tx_open()

打开服务组资源管理器,允许TX交易模式。

软件开发中心:陈首会 13-3-26

北京奥德计算机技术有限公司 第 -11- 页 共 11 页

返 回: (9) int 功 能: 输入参数: 输出参数: 返 回: TX_OK 成功。

其他 失败。 tx_close()

关闭服务组资源管理器。

TX_OK 成功。 其他 失败。

7. 其他

(1) 关于建立一个简单client应用的过程,请参阅文档《TUXEDO使用之一》。

(2) 本文档仅供开发组成员参考,如有问题或不够详细的地方,请查阅原文档《BEA

TUSEDO 6.4 ____Application Development Cource》VolumeⅠ和VolumeⅡ。

软件开发中心:陈首会 13-3-26

北京奥德计算机技术有限公司 第 -11- 页 共 11 页

返 回: (9) int 功 能: 输入参数: 输出参数: 返 回: TX_OK 成功。

其他 失败。 tx_close()

关闭服务组资源管理器。

TX_OK 成功。 其他 失败。

7. 其他

(1) 关于建立一个简单client应用的过程,请参阅文档《TUXEDO使用之一》。

(2) 本文档仅供开发组成员参考,如有问题或不够详细的地方,请查阅原文档《BEA

TUSEDO 6.4 ____Application Development Cource》VolumeⅠ和VolumeⅡ。

软件开发中心:陈首会 13-3-26

本文来源:https://www.bwwdw.com/article/bu38.html

Top