TUXEDO函数说明Word文档格式.docx

上传人:b****5 文档编号:19190458 上传时间:2023-01-04 格式:DOCX 页数:10 大小:18.50KB
下载 相关 举报
TUXEDO函数说明Word文档格式.docx_第1页
第1页 / 共10页
TUXEDO函数说明Word文档格式.docx_第2页
第2页 / 共10页
TUXEDO函数说明Word文档格式.docx_第3页
第3页 / 共10页
TUXEDO函数说明Word文档格式.docx_第4页
第4页 / 共10页
TUXEDO函数说明Word文档格式.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

TUXEDO函数说明Word文档格式.docx

《TUXEDO函数说明Word文档格式.docx》由会员分享,可在线阅读,更多相关《TUXEDO函数说明Word文档格式.docx(10页珍藏版)》请在冰豆网上搜索。

TUXEDO函数说明Word文档格式.docx

5.3tpstrerrordetail9

 

1与缓冲区使用有关的ATMI

1.1tpalloc

char*tpalloc(char*type,char*subtype,longsize)

描述:

分配缓冲区

参数:

type:

缓冲区的类型

subtype:

缓冲区的子类型,只有VIEW有子类型,其他的缓冲区该参数要设为NULL

long:

缓冲区的大小

返回值:

成功返回一个指向所分配空间首地址的CHAR*形指针,失败返回NULL。

1.2tprealloc

char*tprealloc(char*ptr,longsize)

重新分配缓冲区

ptr:

指向原缓冲区首地址的指针

size:

新缓冲区的大小

成功返回一个指向新分配空间首地址的CHAR*形指针,失败返回NULL。

1.3tpfree

voidtpfree(char*bufptr)

释放由TPALLOC()或TPREALLOC()分配的缓冲区

bufptr:

指向要释放的缓冲区首地址的指针

注意:

用TPALLOC(),TPREALLOC()分配的内存只能有TPFREE()释放掉,不能用FREE()

1.4tptypes

longtptypes(char*ptr,char*type,char*subtype)

返回有ptr所指向的缓冲区的类型及子类型

ptr:

指向要进行类型识别的缓冲区首地址的指针

type:

类型名

subtype:

子类型名(只对VIEW类型有效)

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

2常用的FML(FML32)操作函数

2.1Falloc

FBFR*Falloc(FLDOCCF,FLDLENV)

描述:

分配一块FML缓冲区

参数:

FLDOCC:

该FML缓冲区的字段个数,

FLDLEN:

该FML缓冲区的长度

返回值:

成功返回一个指向该FML缓冲区首地址的指针,失败返回NULL,错误号保存在全局

变量Ferror中

该FML缓冲区不能用于TPCALL(),TPACALL(),TPRETURN()等中,在这些函数中用到

的FML缓冲区只能用TPALLOC()分配。

2.2Finit

intFinit(FBFR*fbfr,FLDLENbuflen)

初始化该FML缓冲区

fbfr:

一个指向该FML缓冲区首地址的指针

buflen:

失败为-1,错误号保存在全局变量Ferror中

2.3Fadd

intFadd(FBFR*fbfr,FLDIDfieldid,char*value,FLDLENlen)

往FML缓冲区fbfr中ID为fieldid的字段增加一个值value

fbfr:

指向该FML缓冲区首地址的指针

fieldid:

要增加的字段的ID

value:

要增加的值,如果时其他类型的要转化为char*

len:

该字段的长度,如果不时CARRARY类型的,可设为0

失败为-1,错误号保存在全局变量Ferror中

2.4Fchg

intFchg(FBFR*fbfr,FLDIDfieldid,intocc,char*value,FLDLENlen)

改变fbfr中ID为fieldid字段的值。

该字段的新值,如果时其他类型的要转化为char*

失败为-1,错误号保存在全局变量Ferror中

2.5Fget

intFget(FBFR*fbfr,FLDIDfieldid,intocc,char*value,FLDLEN*maxlen)

从fbfr缓冲区中取ID为fieldid字段的值到value中。

字段的ID

取出的值保存到该指针指向的地址中

maxlen:

可以COPY到缓冲区value中的字符串的长度,返回值为真正COPY到该缓冲区的字

符串的长度

2.5Fprint

Fprint(FBFR*fbfr)

按格式打印fbfr缓冲区的内容。

一般用于程序调试中。

2.6Ferror

Ferror:

和C语言中的errno类似,当调用FML(FML32)函数出错时,把错误号保存在全局变量Ferror中。

char*Fstrerror(interr)

返回错误号为err的错误描述

err:

Ferror的值

成功返回错误描述,失败返回NULL

3连接的建立与断开有关的ATMI

3.1tpchkauth

inttpchkauth()

检查该TUXEDOSERVER所采用的安全方式

TPNOAUTH:

不需要认证

TPSYSAUTH:

需要口令认证

TPAPPSUTH:

需要口令认证,并且还需要应用级的认证或授权.

-1:

调用失败,错误号保存在全局变量tperrno中。

3.2tpinit

inttpinit(TPINIT*tpinfo)

与TUXEDOSERVER建立连接

TPINFO

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

TPINIT结构体在atmi.h中的定义如下

structtpinfo_t{

charusrname[MAXTIDENT+2];

/*clientusername*/

charcltname[MAXTIDENT+2];

/*applicationclientname*/

charpasswd[MAXTIDENT+2];

/*applicationpassword*/

chargrpname[MAXTIDENT+2];

/*clientgroupname*/

longflags;

/*initializationflags*/

longdatalen;

/*lengthofappspecificdata*/

longdata;

/*placeholderforappdata*/

};

typedefstructtpinfo_tTPINIT;

说明:

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

flags:

用于定义以何种方式通知该客户端一个UNSOLICTEDMESSAGE的到来.它的值可以为:

TPU-SIG

TPU-DIP

TPU-IGN

TPSA-FASTPATH

TPSA-PROTECTED

3.3tpterm

inttpterm()

断开与TUXEDOSERVER建立连接

4与请求TUXEDOSERVER有关的ATMI

4.1tpcall

inttpcall(char*svc,char*idata,longilen,char**odata,long*olen,longflags)

客户端同步调用服务端的名为svc的SERVICE,

*svc:

SERVICE的名称

char*idata:

输入缓冲区的地址,客户端传给服务端的参数放在该缓冲区内

longilen:

输入缓冲区的长度

char**odata输出缓冲区的地址,服务端传给客户端的结果放在该缓冲区内

long*olen:

输出缓冲区的长度

longflags:

调用标志,由以下几个:

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

inttpacall(char*svc,char*data,longlen,longflags)

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

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

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

flags可设置为:

TPNOTRAN,TPNOREPLY,TPNOBLOCKTPNOTIME,TPSIGRSTRT.

TPNOTRAN,TPNOBLOCKTPNOTIME,TPSIGRSTRT的含义与与tpcall()中的一样

TPNOREPLY:

调用tpacall()的客户端不想接收SEVER端的应答。

如果设置了

服务端不会给该客户端发送应答。

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

4.3tpgetrply

inttpgetrply(int*cd,char**data,long*len,longflags)

取出服务端对tpacall()的应答。

cdtpacall()返回的HANDLER

char**data返回缓冲区的地址,服务端传给客户端的结果放在该缓冲区内

long*len:

返回缓冲区的长度

flags:

可以是:

TPNOBLOCK,TPNOTIME,TPSIGRSTRT,TPGETANY(不管cd的值,从服务

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

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

4.4tpcancel

inttpcancel(inthandle)

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

中,则不能取消对tpacall()的应答,该调用会失败.

tpacall()返回的HANDLER

4.5tpgprio

inttpgprio()

返回最近发送(tpcall(),tpacall())或接收(tpgetrply())的一个消息的优先级

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

struct{

inthdl;

/*handle*/

intpr;

/*priority*/

}pa[SIZE];

for(i=0;

i<

requests;

i++){

/*Determineserviceanddataforrequest*/

pa[i].hdl=tpacall(Svc,buf,len,flags);

/*Savepriorityusedtosendrequest*/

pa[i].pr=tpgprio();

}

/*Useqsort(3)routinetosorthandlesinpriorityorder*/

qsort((char*)pa,requests,sizeof(pa[0]),cmpfcn);

requests;

tpgetrply(&

pa[i].hdl,&

rbufp,&

rlen,rflags);

4.6tpsprio

inttpsprio(intprio,longflags)

设置下一个要发送的消息的优先级

0-prio为相对值,设置下一个要发送的消息的优先级为现在的优先级加上prio

TPABSOLUTE:

prio为绝对值,设置下一个要发送的消息的优先级为prio

5与请求错误处理有关的ATMI

5.1tpstrerror

char*tpstrerror(inttperrno)

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

tperrno:

在atmi.h中定义的全局变量,用于标识错误号,类似于C中的errno

失败返回NULL,成功返回错误号为tperrno的错误描述.

5.2tperrordetail

inttperrordetail(longflags)

返回当前进程或线程最近调用ATMI的出错的更详细的描述

设为0

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

5.3tpstrerrordetail

char*tpstrerrordetail(interr,longflags)

返回错误描述号err的详细描述信息

err:

tperrordetail()的返回值,

设为0

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1