tpcall



tpcall

int tpcall(char *svc, char *idata, long ilen, char **odata, long *olen, long flags)   描述:客户端同步调用服务端的名为svc的SERVICE,   参数:   *svc:SERVICE的名称   char *idata: 输入缓冲区的地址,客户端传给服务端的参数放在该缓冲区内   long ilen: 输入缓冲区的长度——只有缓冲区类型为CARRAY时才指定长度,其他情况传0   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中.

| 参数 | 说明 |
| *svc | SERVICE的名称 |
| char *idata | 输入缓冲区的地址,客户端传给服务端的参数放在该缓冲区内 | | long ilen | 输入缓冲区的长度——只有缓冲区类型为CARRAY时才指定长度,其他情况传0 | | char **odata | 输出缓冲区的地址,服务端传给客户端的结果放在该缓冲区内 | | long *olen | 输出缓冲区的长度 | | long flags | 调用标志,由以下几个 |

| 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中 |