1与缓冲区使用有关的ATMI
1.1tpalloc
char * tpalloc(char *type, char *subtype, long size)
描述:分配缓冲区
参数:type:缓冲区的类型
subtype:缓冲区的子类型,只有VIEW有子类型,其他的缓冲区该参数要设为NULL
long:缓冲区的大小
返回值: 成功返回一个指向所分配空间首地址的CHAR *形指针,失败返回NULL。
1.2tprealloc
char * tprealloc(char *ptr, long size)
描述:重新分配缓冲区
参数:ptr:指向原缓冲区首地址的指针
size:新缓冲区的大小
返回值: 成功返回一个指向新分配空间首地址的CHAR *形指针,失败返回NULL。
1.3tpfree
void tpfree(char *bufptr)
描述:释放由TPALLOC()或TPREALLOC()分配的缓冲区
参数:bufptr:指向要释放的缓冲区首地址的指针
返回值:无
注意: 用TPALLOC(),TPREALLOC()分配的内存只能有TPFREE()释放掉,不能用FREE()
1.4tptypes
long tptypes(char *ptr, char *type, char *subtype)
描述:返回有ptr所指向的缓冲区的类型及子类型
参数: ptr:指向要进行类型识别的缓冲区首地址的指针
type:类型名
subtype:子类型名(只对VIEW类型有效)
返回值:0成功,-1失败, 错误号保存在全局变量tperrno中。
2常用的FML(FML32)操作函数
字段控制语言(Field Manipulation Language,简称 FML)
FML 是一组 Java 语言函数,用来定义和操作称为字段缓冲区的存储结构。每个字段缓冲区都在字段中包含特性-值对。对于每个字段:
* 特性是字段的标识符。
* 关联的值表示字段的数据内容。
* 出现次数。
有两种类型的 FML:
* 基于字段长度和标识符为 16 位值的 FML16。它所受的限制为:8191 个唯一字段、单个字段长度 64K 字节、总字段缓冲区大小 64K 字节。
* 基于字段长度和标识符为 32 位值的 FML32。它允许大约 3 千万个字段,大约 20 亿字节的字段和缓冲区长度。
2.1Falloc
FBFR* Falloc (FLDOCC F, FLDLEN V)
描述: 分配一块FML缓冲区
参数:
FLDOCC: 该FML缓冲区的字段个数,
FLDLEN: 该FML缓冲区的长度
返回值:成功返回一个指向该FML缓冲区首地址的指针,失败返回NULL,错误号保存在全局
变量Ferror中
注意: 该FML缓冲区不能用于TPCALL(),TPACALL(),TPRETURN()等中,在这些函数中用到
的FML缓冲区只能用TPALLOC()分配。
2.2Finit
int Finit(FBFR *fbfr, FLDLEN buflen)
描述: 初始化该FML缓冲区
参数:
fbfr: 一个指向该FML缓冲区首地址的指针
buflen: 该FML缓冲区的长度
返回值:失败为-1, 错误号保存在全局变量Ferror中
2.3Fadd
int Fadd(FBFR *fbfr, FLDID fieldid, char *value, FLDLEN len)
描述: 往FML缓冲区fbfr中ID为fieldid的字段增加一个值value
参数:
fbfr: 指向该FML缓冲区首地址的指针
fieldid: 要增加的字段的ID
value: 要增加的值,如果时其他类型的要转化为char *
len: 该字段的长度,如果不时CARRARY类型的,可设为0
返回值: 失败为-1, 错误号保存在全局变量Ferror中
2.4Fchg
int Fchg(FBFR *fbfr, FLDID fieldid,int occ, char *value, FLDLEN len)
描述: 改变fbfr中ID为fieldid字段的值。
参数:
fbfr: 指向该FML缓冲区首地址的指针
fieldid: 要增加的字段的ID
value: 该字段的新值,如果时其他类型的要转化为char *
len: 该字段的长度,如果不时CARRARY类型的,可设为0
返回值:失败为-1,错误号保存在全局变量Ferror中
2.5Fget
int Fget(FBFR *fbfr, FLDID fieldid,int occ, char *value, FLDLEN *maxlen)
描述: 从fbfr缓冲区中取ID为fieldid字段的值到value中。
参数:
fbfr: 指向该FML缓冲区首地址的指针
fieldid: 字段的ID
value: 取出的值保存到该指针指向的地址中
maxlen: 可以COPY到缓冲区value中的字符串的长度,返回值为真正COPY到该缓冲区的字
符串的长度
返回值:失败为-1, 错误号保存在全局变量Ferror中
2.6Fprint
Fprint(FBFR *fbfr)
描述: 按格式打印fbfr缓冲区的内容。一般用于程序调试中。
参数:
fbfr: 指向该FML缓冲区首地址的指针
返回值:失败为-1, 错误号保存在全局变量Ferror中
2.7Ferror
Ferror:
和C语言中的errno类似,当调用FML(FML32)函数出错时,把错误号保存在全局变量Ferror中。
char * Fstrerror(int err)
描述:返回错误号为err的错误描述
参数:err: Ferror的值
返回值:成功返回错误描述,失败返回NULL
3连接的建立与断开有关的ATMI
3.1tpchkauth
int tpchkauth()
描述: 检查该TUXEDO SERVER所采用的安全方式
参数:无
返回值:
TPNOAUTH:不需要认证
TPSYSAUTH:需要口令认证
TPAPPSUTH:需要口令认证,并且还需要应用级的认证或授权.
-1:调用失败, 错误号保存在全局变量tperrno中。
3.2tpinit
int tpinit(TPINIT *tpinfo)
描述: 与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 */
};
typedefstruct tpinfo_t TPINIT;
说明:username,cltname,passwd,grpname,data,datalen用于安全认证中
flags:用于定义以何种方式通知该客户端一个UNSOLICTED MESSAGE的到来.它的值可以为:
TPU-SIG
TPU-DIP
TPU-IGN
TPSA-FASTPATH
TPSA-PROTECTED
3.3tpterm
int tpterm()
描述: 断开与TUXEDO SERVER建立连接
参数:无
返回值: 失败返回-1, 错误号保存在全局变量tperrno中。
4与请求TUXEDO SERVER 有关的ATMI
4.1tpcall
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
如果调用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
int tpacall(char *svc, char *data, long len, long flags)
描述: 客户端异步调用服务端的名为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
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中。
4.4tpcancel
int tpcancel(int handle)
描述: 如果当前的程序不处于事务模式中,取消对tpacall()的应答, 如果处于事务模式
中,则不能取消对tpacall()的应答,该调用会失败.
参数: tpacall()返回的HANDLER
返回值: 失败返回-1,错误号保存在全局变量tperrno中。
4.5tpgprio
int tpgprio()
描述:返回最近发送(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
int tpsprio (int prio, long flags)
描述: 设置下一个要发送的消息的优先级
参数: 0- prio为相对值, 设置下一个要发送的消息的优先级为现在的优先级加上prio
TPABSOLUTE: prio为绝对值, 设置下一个要发送的消息的优先级为prio
返回值: 失败返回-1,错误号保存在全局变量tperrno中。
5与请求错误处理有关的ATMI
5.1tpstrerror
char *tpstrerror(int tperrno)
描述:返回错误号为tperrno的错误描述
参数: tperrno:在atmi.h中定义的全局变量,用于标识错误号,类似于C中的errno
返回值: 失败返回NULL,成功返回错误号为tperrno的错误描述.
5.2tperrordetail
int tperrordetail(long flags)
描述: 返回当前进程或线程最近调用ATMI的出错的更详细的描述
参数:设为0
返回值: 如果没有错误返回0,有错误返回错误描述号
5.3tpstrerrordetail
char * tpstrerrordetail(int err, long flags)
描述: 返回错误描述号err的详细描述信息
参数:
err : tperrordetail()的返回值,
flags: 设为0
返回值: 失败返回NULL,成功返回详细描述信息
分享到:
相关推荐
【Tuxedo函数说明】 Tuxedo是一款分布式事务处理监控系统,主要应用于大型企业级应用。本文将介绍Tuxedo中与缓冲区管理和FML(Field Management Language)操作相关的函数,帮助开发者更好地理解和使用Tuxedo。 ##...
【Tuxedo 函数列表详解】 Tuxedo 是一个企业级的事务处理监控系统(Transaction Processing Monitor,TPM),它提供了高效、可靠的分布式应用程序服务。本文将深入解析Tuxedo中涉及的一些关键函数,主要集中在与...
以下是一些关键的TUXEDO函数及其功能: 1. **与缓冲区使用有关的ATMI函数**: - `tpalloc`: 动态分配指定类型和子类型的缓冲区。它返回一个指向分配内存的指针,如果失败则返回NULL。 - `tprealloc`: 重新调整已...
### 常用Tuxedo函数说明 #### ATMI函数:Application-Transaction Monitor Interface Tuxedo 是一种广泛应用于金融领域的高性能交易中间件,它提供了一系列API来支持分布式事务处理。ATMI(Application-...
### TUXEDO函数说明详解 #### 一、内存管理函数 TUXEDO系统提供了几个关键的内存管理函数,包括`tpalloc`、`tprealloc`和`tpfree`,以及`tptypes`用于类型检查。 1. **tpalloc** - 函数原型:`char*tpalloc(char...
根据给定文件的信息,我们可以详细地探讨Tuxedo ATMI C函数的相关知识点。Tuxedo是一种广泛应用于金融、电信等领域的分布式事务处理系统,而ATMI(Application Transaction Middleware Interface)则是用于开发、...
以下是对这些常用TUXEDO函数的详细说明: 1. **tpreturn()**:这是服务程序结束时用于向客户端返回结果的函数。它有五个参数,分别表示服务执行状态(rval)、返回代码(rcode)、数据(data)、数据长度(len)和...
以上就是TUXEDO函数的一些核心功能,它们构成了TUXEDO应用程序开发的基础,帮助开发者有效地管理内存、操作FML数据以及处理与服务器的交互。理解和熟练掌握这些函数对于构建高效、可靠的TUXEDO应用程序至关重要。
BEA Tuxedo应用程序开发指南.doc BEA TUXEDO快速入门.doc BEA Tuxedo的七种通信方式⑴.doc BEA Tuxedo的七种通信方式⑵.doc Tuxedo 技术文档.pdf tuxedo培训教程.doc Tuxedo常用函数说明ATMI....常用TUXEDO函数说明.doc
一、TUXEDO函数说明 TUXEDO提供了丰富的API,这些函数是开发者进行TUXEDO应用程序开发的基础。以下是一些关键的TUXEDO函数: 1. `tmstart()`: 这个函数启动TUXEDO系统,并连接到服务器。它需要一个配置文件路径...
描述中提到了"tuxedo函数",这暗示TUXEDO提供了一系列的API函数供开发者使用。其中两个重要的函数是`tpcall`和`tpinit`。`tpcall`是TUXEDO的核心函数,用于执行远程过程调用(RPC)。它接受一个事务上下文、服务名、...
本文将对 BEA Tuxedo 进行简介,并对其配置文件、常见错误分析和常用函数进行详细说明。 一、BEA TUXEDO 简介 BEA Tuxedo 是一个基于事务的中间件平台,旨在提供高性能、可靠性和可扩展性的分布式应用程序解决方案...
【Tuxedo常用函数说明ATMI】是关于Tuxedo应用程序开发的重要内容,Tuxedo是一种分布式事务处理系统,而ATMI(应用程序事务监控接口)是其提供的核心API,用于构建高可用、高性能的企业级服务。以下将详细介绍相关...
五、常用BEA TUXEDO函数 Tuxedo提供了一系列的API函数供开发者使用,包括事务管理、进程间通信、错误处理等功能。例如,`tmtrans()`用于开始或结束一个事务,`tminit()`初始化Tuxedo环境,`tmsend()`和`tmsendrecv()...
【常用BEA TUXEDO函数】 TUXEDO提供了丰富的函数库,如ATMI(Application Transaction Monitor Interface)函数,用于实现进程间通信和事务管理。这些函数包括`btpush`用于发送消息,`btrecv`用于接收消息,`btdone...
总结,BEA Tuxedo+ WebLogic编程涉及到了分布式计算、事务管理、中间件集成等多个方面,理解并熟练掌握其配置、函数调用以及错误排查是开发高效、稳定的企业级应用的关键。在实际项目中,开发者需要根据业务需求和...
### Tuxedo编程简介 #### 一、BEA Tuxedo简介 ...综上所述,Tuxedo 是一个功能强大且高度可定制的事务处理平台,通过合理配置其核心参数和使用提供的工具及函数,可以有效地管理和优化 Tuxedo 应用程序的性能。