TUXEDO自学笔记(一)

 

1. TPSVCINFO结构体

void tpservice(TPSVCINFO *svcinfo);
只有一个参数,该参数是指向TPSVCINFO结构的指针(atmi.h)。该结构定义如下:

struct tpsvcinfo {
char name[32];   /*service名(最大15个字符)*/
long flags;      /* client调用时指定的flags */

char *d ata;      /* 接收的数据地址 */
long len;        /* 数据长度 */
int cd;         /* 会话方式下的连接描述符 */
long appkey;     /* 应用认证的key */
CLIENTID cltid;  /* client ID */
};

2.调试和出错处理

       当调用ATMI出错时,返回值为-1,全程变量tperrno被设值,该变量提供系统定义的出错原因。函数tpstrerror()以此变量为参数,返回错误的字符说明信息。完整的错误号和文本错误信息存在于文件$TUXDIR/include/atmi.h。函数userlog()重定向输出文件为ULOG.mmddyy。使用方法同printf()。该函数每次输出都写硬盘,这样在系统失败时也能保留调试信息。

usrlog(“ATMI error logged %d %s”,tperrno,tpstrerror(tperrno));

 

3.TUXEDO基本的数据缓冲类型:

²  STRING 以空值结尾的单域字符数据。

²  CARRAY 有长度定义的单域二进制数据,不进行编、解码。

²  VIEW            类C结构或COBOL记录的多域组织。

²  FML              无固定结构的自定义缓冲。

 

4.数据缓冲管理

函数用法:

(char *)tpalloc((char *)type, (char *)subtype, long size)

(char *)tprealloc((char *)bufptr, long newsize)

void tpfree((char *)bufptr)

 

5.同步通讯和异步通讯

同步通讯   int tpcall((char *)servicename, (char *)bufptr, long length, (char **)bufptr, (long *)length, long flags)

函数tpcall()有6个参数。如下:

交易名

²  请求数据缓冲

²  请求数据缓冲的长度(仅缓冲类型为CARRY时需要)

²  返回数据缓冲的地址。缓冲大小可以根据收到数据而改变。

²  返回数据缓冲大小的地址

²  标志量

标志量可以是以下值:

²  TPNOTRAN   如有交易不调用

²  TPNOBLOCK 如有阻塞不等待

²  TPNOTIME          愿意等待直到超时

²  TPSIGRSTRT       系统中断信号在TUXEDO完成后再发布

出错返回-1,错误原因如下:

²  TPEINVAL     参数错误

²  TPETRAN      交易相关错误

²  TPETIME      超时

ret = tpcall(“TOUPPER”,bufptr,len,&bufptr,&len,flags);

 

ATMI提供2个异步通讯函数

tpacall()和tpgetrply()

int tpacall((char *)service, (char *)bufptr, long len, long flags);

flag:TPNOBLOCK,TPSIGRSTRT,TPNOTIME,TPNOTRAN,TPNOCHANGE,TPGETANY

int tpgetrply((int *)handle, (char **)bufptr, (long *)len, long flags);

flag:TPNOBLOCK,TPSIGRSTRT,TPNOTIME,TPNOTRAN

tpacall()有4个参数

²  交易名

²  请求数据缓冲

²  请求数据缓冲的长度(仅缓冲类型为CARRY时需要)

²  标志量(同tpcall())

返回值是一个非负描述符(句柄),用于其后的tpgetrply()调用。如果tpacall()调用失败,句柄是-1,错误原因设置在tperrno,可能是以下值:

TPELIMIT  过多未处理的tpacall()

TPETIME   超时

tpacall()后总跟随一个tpgetrply(),有4个参数

²  变量地址,可以传入tpcall()所得句柄,或另设一个

²  返回数据缓冲的地址。缓冲大小可以根据收到数据而改变。

²  返回数据缓冲大小的地址

²  标志量

标志量的值可以是如下之一:

TPGETANY                     取第一个返回值,设句柄

TPNOCHANGE         取发送请求的匹配的类型的信息

参见tpcall()中的值

返回值0表示成功,-1表示失败,错误原因可能如下:

²  TPEINVAL         参数错误

²  TPEOTYPE              返回数据缓冲类型错误

²  TPETIME   超时

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值