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中。
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的参数,用于取应答
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<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);
}
int tpsprio (int prio, long flags)
描述: 设置下一个要发送的消息的优先级
参数: 0-
prio为
相对值, 设置下一个要发送的消息的优先级为现在的优先级加上
prio
TPABSOLUTE: prio为绝对值,
设置下一个要发送的消息的优先级为
prio
返回值: 失败返回-1,错误号保存在全局变量tperrno中。
5
与请求错误处理有关的
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,成功返回
详细描述信息。