云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 第七章:TUXEDO的客户端编程

第七章:TUXEDO的客户端编程

  • 62 次阅读
  • 3 次下载
  • 2025/6/14 10:23:49

long datalen; /* length of app specific data */ long data; /* placeholder for app data */ };

typedef struct tpinfo_t TPINIT;

说明:username,cltname,passwd,grpname,data,datalen用于安全认证中

flags:用于定义以何种方式通知该客户端一个UNSOLICTED MESSAGE的到来.它的值可以为: TPU-SIG TPU-DIP TPU-IGN

TPSA-FASTPATH TPSA-PROTECTED

int tpterm()

描述: 断开与TUXEDO SERVER建立连接 参数:无

返回值: 失败返回-1, 错误号保存在全局变量tperrno中。

与请求TUXEDO SERVER 有关的ATMI

int tpcall(char *svc, char *idata, long ilen, char **odata, long *olen, long flags)

描述:客户端同步调用服务端的名为svc的SERVICE, 参数:

*svc:SERVICE的名称

char *idata: 输入缓冲区的地址,客户端传给服务端的参数放在该缓冲区内 long ilen: 输入缓冲区的长度

char **odata 输出缓冲区的地址,服务端传给客户端的结果放在该缓冲区内 long *olen:输出缓冲区的长度 long flags: 调用标志,由以下几个: TPNOTRAN (TpNoTransaction)

如果调用svc的客户端当前在TRANSACTION方式下,那么svc不参与当前的TRANSACTION。

TPNOCHANGE (TpNoChange)

如果服务端返回的缓冲区类型与客户端定义的缓冲区(odata)类型不一致,默认情况下,odata会转换成与服务端返回的缓冲区类型一致的类型,如果设置了该FLAG,那么当出现这种情况时,不进行缓冲区类型转换,并且会报错。

TPNOBLOCK

默认情况下,如果客户端有阻塞条件存在(如CLIENT的TCP/IP中的缓冲区满,磁盘I/O忙等),那么客户端会阻塞在那里,直到阻塞消除或超时出错。如果设置了TPNOBLOCK,当客户端有阻塞条件存在时,TPCALL()会立刻返回并报错. 注意TPNOBLOCK只对发送请求时起作用,如果在接收服务端返回的结果时有阻塞条件存在,客户端会在那里等待,直到阻塞消除或超时出错

TPNOTIME

如果客户端有阻塞条件存在,客户端会一直阻塞在那里,即使到了超时时间也不返回,但如果该客户端是在TRANSACTION模式下,当到了事务的超时时间,还是会报超时错误并返回。

TPSIGRSTRT

如果在进行系统调用时,被信号中断,该系统调用会重新进行。

调用成功返回0,失败返回-1, 错误号保存在全局变量tperrno中。

int tpacall(char *svc, char *data, long len, long flags)

描述: 客户端异步调用服务端的名为svc的SERVICE,不等服务端返回结果,程序可继续往

下走,在某个地方调用tpgetrply()取的服务端的返回 参数:

char *svc, char *data, long len参数的含义与tpcall()中的一样

flags 可设置为:TPNOTRAN, TPNOREPLY, TPNOBLOC,KTPNOTIME, TPSIGRSTRT. TPNOTRAN, TPNOBLOCK,TPNOTIME, TPSIGRSTRT的含义与与tpcall()中的一样

TPNOREPLY:调用tpacall()的客户端不想接收SEVER端的应答。如果设置了TPNOREPLY,服务端不会给该客户端发送应答。

返回值: 失败返回-1,成功返回一个HANDLER,可作为tpgetrply的参数,用于取应答

int tpgetrply(int *cd, char **data, long *len, long flags) 描述:取出服务端对tpacall()的应答。 参数: cd tpacall()返回的HANDLER

char **data返回缓冲区的地址,服务端传给客户端的结果放在该缓冲区内 long *len:返回缓冲区的长度 flags:可以是:TPNOBLOCK, TPNOTIME,TPSIGRSTRT,TPGETANY(不管cd的值,从服务

器的应答队列中取第一个可用的消息),TPNOCHANGE

返回值: 失败返回-1,错误号保存在全局变量tperrno中。

int tpcancel(int handle)

描述: 如果当前的程序不处于事务模式中,取消对tpacall()的应答, 如果处于事务模式

中,则不能取消对tpacall()的应答,该调用会失败. 参数: tpacall()返回的HANDLER

返回值: 失败返回-1,错误号保存在全局变量tperrno中。

int tpgprio()

描述:返回最近发送(tpcall(),tpacall())或接收(tpgetrply())的一个消息的优先级 参数:无

返回值: 1-100消息的优先级,值越高, 优先级越高

失败返回-1, 错误号保存在全局变量tperrno中。

struct {

int hdl; /* handle*/ int pr; /* priority*/ } pa[SIZE];

for (i=0; i

/* Determine service and data for request */ pa [i].hdl = tpacall(Svc, buf, len, flags); /* Save priority used to send request */ pa[i].pr = tpgprio(); }

/* Use qsort(3) routine to sort handles in priority order */ qsort((char*) pa, requests, sizeof(pa[0]), cmpfcn); for (i=0; i< requests; i++) {

tpgetrply(&pa[i].hdl, &rbufp, &rlen, rflags); }

int tpsprio (int prio, long flags) 描述: 设置下一个要发送的消息的优先级

参数: 0- prio为相对值, 设置下一个要发送的消息的优先级为现在的优先级加上prio TPABSOLUTE: prio为绝对值, 设置下一个要发送的消息的优先级为prio 返回值: 失败返回-1,错误号保存在全局变量tperrno中。

与请求错误处理有关的ATMI

char *tpstrerror(int tperrno)

描述:返回错误号为tperrno的错误描述

参数: tperrno:在atmi.h中定义的全局变量,用于标识错误号,类似于C中的errno 返回值: 失败返回NULL,成功返回错误号为tperrno的错误描述.

int tperrordetail(long flags)

描述: 返回当前进程或线程最近调用ATMI的出错的更详细的描述 参数:设为0

返回值: 如果没有错误返回0,有错误返回错误描述号

char * tpstrerrordetail(int err, long flags) 描述: 返回错误描述号err的详细描述信息 参数: err : tperrordetail()的返回值, flags: 设为0

返回值: 失败返回NULL,成功返回详细描述信息

7.3 采用C语言编写TUXEDO的客户端程序

如果是采用C语言编写TUXEDO的客户端程序,可直接采用ATMI的函数,这些函数在atmi.h中定义.采用C语言编写TUXEDO的客户端的例子在此不列举,可参考simpapp,bankapp等例子.采用C语言编写客户端的编译是用buildclient命令进行的,它的使用格式如下: buildclient [-C] [-v] [{-w | -r rmname}] [-o outfile] [-f firstfiles] [-l lastfiles]

参数说明:

-C: 编译用COBOL写的客户端 -v: 输出详细的编译信息

-w: 编译成REMOTE CLIENT,如果不带该参数,那么将编译成NATIVE CLIENT. -o: 编译生成的可执行文件名 -f: 要编译的C文件名

-l: 指定要编译生成该可执行文件名要连接的其他库文件,如果有多个库文件要连接,它们之间用空格隔开.

-r: 指定该CLIENT要连接的RM

buildclient 调用C或C++编译器来进行编译工作.所以客户端所在的机器要有C,C++编译器才能编译C客户端的程序.

如果是WINDOWS客户端,可安装VC,并在DOS环境下编译C客户端的程序. 如果在安装VC时没有把自动设置环境变量的选项选上,VC中设置环境变量的文件在VC安装目录下的\\bin\\vcvars32.bat中,可手工执行它或在设置环境变量的文件中用CALL调用它,如:

call d:\\vs6\\vc98\\bin\\vcvars32.bat set TUXDIR=d:\\tuxedo65

set WSNADDR=//192.33.21.14:9000 set APPDIR=d:\\tuxdemo\\conn

set PATH=%TUXDIR%\\bin;%APPDIR%;%PATH% set TUXCONFIG=%APPDIR%\\tuxconfig set FIELDTBLS=%APPDIR%\\myfml set FLDTBLDIR=%APPDIR%

如果是UNIX客户端,可安装CC,GCC等C或C++编译器.并在CC环境变量中设置所用的C编译器路径.

7.4 采用VC编写TUXEDO客户端程序

采用VC编写客户端程序与采用C语言编写客户端的方式一样,但要对VC要进行一些设置才能进行编译,说明如下:

1. 在/project/setting/link下的object/library modules中加上wtuxws32.lib,如图

所示:

搜索更多关于: 第七章:TUXEDO的客户端编程 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

long datalen; /* length of app specific data */ long data; /* placeholder for app data */ }; typedef struct tpinfo_t TPINIT; 说明:username,cltname,passwd,grpname,data,datalen用于安全认证中 flags:用于定义以何种方式通知该客户端一个UNSOLICTED MESSAGE的到来.它的值可以为: TPU-SIG TPU-DIP TPU-IGN TPSA-FASTPATH TPSA-PROTECTED int tpterm() 描述: 断开与TUXEDO SERVER建立连接 参数:无 返回值: 失败返回-1

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com