TUXEDO函数说明
上一篇 / 下一篇 2009-05-23 11:49:08 / 个人分类:tuxedo
1与缓冲区使用有关的ATMI 2 1.1tpalloc. 2 1.2tprealloc. 2 1.3tpfree. 2 1.4tptypes. 2 2常用的FML(FML32)操作函数... 3 2.1Falloc. 3 2.2Finit 3 2.3Fadd. 3 2.4Fchg. 3 2.5Fget 4 2.5Fprint 4 2.6Ferror 4 3连接的建立与断开有关的ATMI 5 3.1tpchkauth. 5 3.2tpinit 5 3.3tpterm.. 6 4与请求TUXEDO SERVER 有关的ATMI 6 4.1tpcall 6 4.2tpacall 7 4.3tpgetrply. 7 4.4tpcancel 7 4.5tpgprio. 8 4.6tpsprio. 8 5与请求错误处理有关的ATMI 8 5.1tpstrerror 8 5.2tperrordetail 9 5.3tpstrerrordetail 9 1与缓冲区使用有关的ATMI 描述:分配缓冲区 参数:type:缓冲区的类型 subtype:缓冲区的子类型,只有VIEW有子类型,其他的缓冲区该参数要设为NULL long:缓冲区的大小 返回值: 成功返回一个指向所分配空间首地址的CHAR *形指针,失败返回NULL。 1.2tprealloc 描述:重新分配缓冲区 参数:ptr:指向原缓冲区首地址的指针 size:新缓冲区的大小 返回值: 成功返回一个指向新分配空间首地址的CHAR *形指针,失败返回NULL。 1.3tpfree 描述:释放由TPALLOC()或TPREALLOC()分配的缓冲区 参数:bufptr:指向要释放的缓冲区首地址的指针 返回值:无 注意: 用TPALLOC(),TPREALLOC()分配的内存只能有TPFREE()释放掉,不能用FREE() 1.4tptypes 描述:返回有ptr所指向的缓冲区的类型及子类型 参数: ptr:指向要进行类型识别的缓冲区首地址的指针 type:类型名 subtype:子类型名(只对VIEW类型有效) 返回值:0成功,-1失败, 错误号保存在全局变量tperrno中。
2常用的FML(FML32)操作函数 描述: 分配一块FML缓冲区 参数: FLDOCC: 该FML缓冲区的字段个数, FLDLEN: 该FML缓冲区的长度 返回值:成功返回一个指向该FML缓冲区首地址的指针,失败返回NULL,错误号保存在全局 变量Ferror中 注意: 该FML缓冲区不能用于TPCALL(),TPACALL(),TPRETURN()等中,在这些函数中用到 的FML缓冲区只能用TPALLOC()分配。 2.2Finit 描述: 初始化该FML缓冲区 参数: fbfr: 一个指向该FML缓冲区首地址的指针 buflen: 该FML缓冲区的长度 返回值:失败为-1, 错误号保存在全局变量Ferror中 2.3Fadd
描述: 往FML缓冲区fbfr中ID为fieldid的字段增加一个值value 参数: fbfr: 指向该FML缓冲区首地址的指针 fieldid: 要增加的字段的ID value: 要增加的值,如果时其他类型的要转化为char * len: 该字段的长度,如果不时CARRARY类型的,可设为0 返回值: 失败为-1, 错误号保存在全局变量Ferror中 2.4Fchg 描述: 改变fbfr中ID为fieldid字段的值。 参数: fbfr: 指向该FML缓冲区首地址的指针 fieldid: 要增加的字段的ID value: 该字段的新值,如果时其他类型的要转化为char * len: 该字段的长度,如果不时CARRARY类型的,可设为0 返回值:失败为-1,错误号保存在全局变量Ferror中 2.5Fget 描述: 从fbfr缓冲区中取ID为fieldid字段的值到value中。 参数: fbfr: 指向该FML缓冲区首地址的指针 fieldid: 字段的ID value: 取出的值保存到该指针指向的地址中 maxlen: 可以COPY到缓冲区value中的字符串的长度,返回值为真正COPY到该缓冲区的字 符串的长度 返回值:失败为-1, 错误号保存在全局变量Ferror中 2.5Fprint 描述: 按格式打印fbfr缓冲区的内容。一般用于程序调试中。 参数: fbfr: 指向该FML缓冲区首地址的指针 返回值:失败为-1, 错误号保存在全局变量Ferror中 2.6Ferror 和C语言中的errno类似,当调用FML(FML32)函数出错时,把错误号保存在全局变量Ferror中。 char * Fstrerror(int err) 描述:返回错误号为err的错误描述 参数:err: Ferror的值 返回值:成功返回错误描述,失败返回NULL 3连接的建立与断开有关的ATMI 描述: 检查该TUXEDO SERVER所采用的安全方式 参数:无 返回值: TPNOAUTH:不需要认证 TPSYSAUTH:需要口令认证 TPAPPSUTH:需要口令认证,并且还需要应用级的认证或授权. -1:调用失败, 错误号保存在全局变量tperrno中。 3.2tpinit 描述: 与TUXEDO SERVER建立连接 参数:TPINFO 返回值: 失败返回-1, 错误号保存在全局变量tperrno中。 TPINIT结构体在atmi.h中的定义如下 struct tpinfo_t { char usrname[MAXTIDENT+2]; /* client user name */ char cltname[MAXTIDENT+2]; /* application client name */ char passwd[MAXTIDENT+2]; /* application password */ char grpname[MAXTIDENT+2]; /* client group name */ long flags; /* initialization flags */ 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 3.3tpterm 描述: 断开与TUXEDO SERVER建立连接 参数:无 返回值: 失败返回-1, 错误号保存在全局变量tperrno中。 4与请求TUXEDO SERVER 有关的ATMI 描述:客户端同步调用服务端的名为svc的SERVICE, 参数: *svc:SERVICE的名称 char *idata: 输入缓冲区的地址,客户端传给服务端的参数放在该缓冲区内 long ilen: 输入缓冲区的长度 char **odata 输出缓冲区的地址,服务端传给客户端的结果放在该缓冲区内 long *olen:输出缓冲区的长度 long flags: 调用标志,由以下几个: TPNOTRAN 如果调用svc的客户端当前在TRANSACTION方式下,那么svc不参与当前的TRANSACTION。 TPNOCHANGE 如果服务端返回的缓冲区类型与客户端定义的缓冲区(odata)类型不一致,默认情况下,odata会转换成与服务端返回的缓冲区类型一致的类型,如果设置了该FLAG,那么当出现这种情况时,不进行缓冲区类型转换,并且会保错。 TPNOBLOCK 默认情况下,如果客户端有阻塞条件存在(如CLIENT的TCP/IP中的缓冲区满,磁盘I/O忙等),那么客户端会阻塞在那里,直到阻塞消除或超时出错。如果设置了TPNOBLOCK,当客户端有阻塞条件存在时,TPCALL()会立刻返回并报错. 注意TPNOBLOCK只对发送请求时起作用,如果在接收服务端返回的结果时有阻塞条件存在,客户端会在那里等待,直到阻塞消除或超时出错 TPNOTIME 如果客户端有阻塞条件存在,客户端会一直阻塞在那里,即使到了超时时间也不返回,但如果该客户端是在TRANSACTION模式下,当到了 事务的超时时间,还是会报超时错误并返回。
TPSIGRSTRT 如果在进行系统调用时,被信号中断,该系统调用会重新进行。
调用成功返回0,失败返回-1, 错误号保存在全局变量tperrno中。
4.2tpacall 描述: 客户端异步调用服务端的名为svc的SERVICE,不等服务端返回结果,程序可继续往 下走,在某个地方调用tpgetrply()取的服务端的返回 参数: char *svc, char *data, long len参数的含义与tpcall()中的一样 flags 可设置为:TPNOTRAN, TPNOREPLY, TPNOBLOCKTPNOTIME, TPSIGRSTRT. TPNOTRAN, TPNOBLOCKTPNOTIME, TPSIGRSTRT的含义与与tpcall()中的一样 TPNOREPLY:调用tpacall()的客户端不想接收SEVER端的应答。如果设置了 TPNOREPLY:服务端不会给该客户端发送应答。 返回值: 失败返回-1,成功返回一个HANDLER,可作为tpgetrply的参数,用于取应答 4.3tpgetrply 描述:取出服务端对tpacall()的应答。 参数: cd tpacall()返回的HANDLER char **data返回缓冲区的地址,服务端传给客户端的结果放在该缓冲区内 long *len:返回缓冲区的长度 flags:可以是:TPNOBLOCK, TPNOTIME,TPSIGRSTRT,TPGETANY(不管cd的值,从服务 器的应答队列中取第一个可用的消息),TPNOCHANGE 返回值: 失败返回-1,错误号保存在全局变量tperrno中。
4.4tpcancel 描述: 如果当前的程序不处于事务模式中,取消对tpacall()的应答, 如果处于事务模式 中,则不能取消对tpacall()的应答,该调用会失败. 参数: tpacall()返回的HANDLER 返回值: 失败返回-1,错误号保存在全局变量tperrno中。 4.5tpgprio 描述:返回最近发送(tpcall(),tpacall())或接收(tpgetrply())的一个消息的优先级 参数:无 返回值: 1-100消息的优先级,值越高, 优先级越高 失败返回-1, 错误号保存在全局变量tperrno中。
struct { int hdl; /* handle*/ int pr; /* priority*/ } pa[SIZE]; for (i=0; i<requests; 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); } 4.6tpsprio 描述: 设置下一个要发送的消息的优先级 参数: 0- prio为相对值, 设置下一个要发送的消息的优先级为现在的优先级加上prio TPABSOLUTE: prio为绝对值, 设置下一个要发送的消息的优先级为prio 返回值: 失败返回-1,错误号保存在全局变量tperrno中。 5与请求错误处理有关的ATMI 描述:返回错误号为tperrno的错误描述 参数: tperrno:在atmi.h中定义的全局变量,用于标识错误号,类似于C中的errno 返回值: 失败返回NULL,成功返回错误号为tperrno的错误描述. 5.2tperrordetail 描述: 返回当前进程或线程最近调用ATMI的出错的更详细的描述 参数:设为0 返回值: 如果没有错误返回0,有错误返回错误描述号 5.3tpstrerrordetail 描述: 返回错误描述号err的详细描述信息 参数: err : tperrordetail()的返回值, flags: 设为0 返回值: 失败返回NULL,成功返回详细描述信息 作者Blog:http://blog.csdn.net/easyxu/ |
TAG:
我的栏目
标题搜索
日历
|
|||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
1 | 2 | 3 | 4 | 5 | 6 | ||||
7 | 8 | 9 | 10 | 11 | 12 | 13 | |||
14 | 15 | 16 | 17 | 18 | 19 | 20 | |||
21 | 22 | 23 | 24 | 25 | 26 | 27 | |||
28 | 29 | 30 |
我的存档
数据统计
- 访问量: 191897
- 日志数: 97
- 图片数: 1
- 书签数: 2
- 建立时间: 2007-07-18
- 更新时间: 2020-03-18