tuxedo常用接口记录
最近一直在测试中心测试,没有搞什么新东西。整理一下以前的东西已做记录
1.1 tpchkauth检查是否需要认证和认证的级别
int tpchkauth();
在调用tpinit()之前检查是否需要认证和认证的级别。
返回值:
TPNOAUTH:不需要认证;
TPSYSAUTH:系统认证,需要密码;
TPAPPAUTH:应用认证,需要密码和特殊应用数据;
当返回值为TPSYSAUTH和TPAPPAUTH时,我们必须使用tpalloc()分配一个TPINIT结构,在该结构中填入认证数据,然后用该结构作为参数调用tpinit()。
失败原因主要有:
协议错;
操作系统错;
tuxedo底层错。
1.2 tpinit初始化
在使用tuxedo其他服务之前,必须调用tpinit加入到应用中。
int tpinit(TPINIT *tpinfo);
参数说明:
tpinfo:指向TPINIT类型的指针。
TPINIT类型在atmi.h中有定义,如以下几个域:
char usrname [32]; (32 characters significant)
char cltname [32]; (32 characters significant)
char passwd [32]; (8 characters significant)
char grpname [32]; (32 characters significant)
long flags;
long datalen;
long data;
usrname:用户名或login名;
cltname:应用定义;
passwd:应用密码;
grpname:在事务中使用,必须在配置文件定义的组列表中;
flags:定义请求/通知类型和系统存取方法,其中TPU_SIG、TPU_DIP和TPU_IGN不能同时指定;TPSA_FASTPATH和TPSA_PROTECTED不能同时指定。有如下的值:
TPU_SIG:选择信号通知;
TPU_DIP:选择dip-in通知;
TPU_IGN:忽略通知;
TPSA_FASTPATH:选择fastpath方式系统存取;
TPSA_PROTECTED:选择protected方式系统存取;
datalen:应用特殊数据的长度;
data:应用特殊数据;
域flags的值覆盖系统的缺省定义,前提是在配置文件中没有指定NO_OVERRIDE。
如果参数使用(TPINIT*)NULL,则client使用系统缺省的通知设置和系统存取设置,若需要认证,则出错返回TPEPERM。
tpinit()调用失败返回-1,失败原因有:
参数错;
没有空间在BB;
没有权限;
协议错;
操作系统错;
tuxedo底层错。
示例:
TPINIT *tpinfo;
char password[9];
if ((tpinfo = (TPINIT *)tpalloc(“TPINIT”, NULL, TPINITNEED(0))) == NULL) {
(void)userlog(“unable to allocate TPINIT buffer”);
exit(1);
}
(void)strcpy(tpinfo->passwd, password);
(void)strcpy(tpinfo->usrname, “Smith”);
(void)strcpy(tpinfo->cltname, “Teller”);
tpinfo->flags = (TPU_DIP|TPSA_PROTECTED);
if (tpinit(tpinfo) == -1) {
(void)userlog(“failed to join application”);
tpfree((char*)tpinfo);
exit(1);
}
长连接则只在凶重启和系统非常空闲时调用tperm
1.3 tperm离开应用
使用tuxedo服务完毕,调用tpterm()离开应用。
int tpterm();
函数出错返回-1。
错误原因有:
协议错;
操作系统错;
tuxedo底层错。
1.4 tpacall发送异步请求
发送异步请求。
int tpacall(char *service, char *bufptr, long length, long flags);
参数说明:
service:请求的service名(最大15个字符,以null结尾);
bufptr:请求发送的数据;
length:发送数据长度(只有CARRAY类型用,其他设为0);
flags:发送模式,有如下的值:
TPNOTRAN:该次调用不能在一个事务里;
TPNOREPLY:不需要回应(reply);
TPNOBLOCK:非阻塞;
TPNOTIME:不超时,一直等待;
TPSIGRSTRT:被信号中断的系统调用重启。
成功返回一个非负的描述符,该描述符可用于后续的tpgetrply调用,出错返回-1。
错误原因有:
参数错;
当前太多的tpacall处理存在,上限是50;
事务错;
超时(time-out);
1.5 tpgetrply接收异步回应数据
接收异步回应数据。
建议flag使用TPGETANY默认
int tpgetrply(int *handle, char **bufpp, long *length, long flags);
参数说明:
handle:tpacall返回的描述符;
bufpp:接收buffer的地址的地址,原buffer会自动调整;
length:接收的buffer的长度的地址;
flags:接收选项。有如下值:
TPNOBLOCK:非阻塞;
TPNOTIME:不超时,一直等待;
TPSIGRSTRT:被信号中断的系统调用重启;
TPGETANY:接收任何回应;
TPNOCHANGE:要求接收的回应与发送数据相同。
成功返回0,失败返回-1。
出错原因:
参数错;
错误的接收buffer类型;
超时;
其他错误;
1.6 tpcancel取消由tpacall发送的请求的响应
取消由tpacall发送的请求的响应,在没有事务未完时。不能取消一个已经处理的请求。
int tpcancel(int handle);
参数说明:
handle:tpacall返回的描述符;
出错返回-1。错误原因有:
错误的描述符;
当前在事务模式;
其他错误;
/****************************************
* tpcall说明:同步发送请求并接收回应数据接口
*原型 int tpcall(int *handle, char **bufpp, long *length, long flags);
*参数说明:
*handle:tpacall返回的描述符;
*bufpp:接收buffer的地址的地址,原buffer会自动调整;
*length:接收的buffer的长度的地址;
*flags:接收选项。
*返回值说明:
*-1表示出错,其他返回值都表示成功。
* */
1.7 tpcall同步发送请求并接收回应数据
同步发送请求并接收回应数据。
int tpcall(char *service, char *sbufp, long slength, char **rbufpp, long *rlength, long flags);
请求的service名 发送buffer的地址 响应buffer的地址的地址,可以与发送buffer为同一块区域 响应buffer的长度的地址(不能为NULL) 标志
参数说明:
service:请求的service名;
bufp:发送buffer的地址;
slength:发送数据长度(只CARRAY使用,其他为0);
rbufpp:响应buffer的地址的地址,可以与发送buffer为同一块区域;
rlength:响应buffer的长度的地址(不能为NULL);
flags:标志。有如下值(含义见tpacall和tpgetrply):
TPNOTRAN:该次调用不能在一个事务里;
TPNOREPLY:不需要回应(reply);
TPNOBLOCK:非阻塞;
TPNOTIME:不超时,一直等待;
TPSIGRSTRT:被信号中断的系统调用重启。
返回-1表示出错,其他返回值都表示成功。
错误原因与tpacall和tpgetrply相同,除了描述符错。
1.8 tpgprio获得上一次请求或接收的消息的优先级
获得上一次请求或接收的消息的优先级。
int tpgprio();
成功返回的范围是1-100,值越大优先级越高。失败返回-1。
使用举例:
struct {
int hdl;
int pr;
} pa[SIZE];
for (i=0; i < requests; i++) {
pa [i].hdl = tpacall(Svc, buf, len, flags);
pa[i].pr = tpgprio();
}
qsort((char*) pa, requests, sizeof(pa[0]), cmpfcn);
for (i=0; i< requests; i++) {
tpgetrply(&pa[i].hdl, &rbufp, &rlen, rflags);
}
1.9 tpsprio设置下一个要发送的消息的优先级
设置下一个要发送的消息的优先级。
int tpsprio (int prio, long flags);
参数说明:
prio:要设置的优先级;
flags:标志。有如下值:
0:使用相对优先级,值改为(default+prio);
TPABSOLUTE:绝对优先级,值改为prio;
优先级的范围是1-100,超过次限制的值被改为相应的最大(小)值。
失败返回-1。错误原因有TPEINVAL、TPEPROTO、TPESYSTEM、和TPEOS。
tuxedo常用接口记录相关推荐
- 【LeetCode 总结】Leetcode 题型分类总结、索引与常用接口函数
文章目录 零. Java 常用接口函数 一. 动态规划 二. 链表 三. 哈希表 四. 滑动窗口 五. 字符串 六. DFS.BFS 七. 二分法 八. 二叉树 九. 偏数学.过目不忘 and 原地算 ...
- 开发中Docker常用容器记录
开发中Docker常用容器记录 概览 分享工作学习中常用的Docker容器使用: 比如常用数据库的使用 消息队列类的使用 用于服务发现的容器使用 还有其他工作学习中使用到的 持续更新:https:// ...
- 驰骋BPM工作流后台常用接口与前台常用方法
一.流程引擎后台常用接口 接口说明 所谓的驰骋工作流引擎的接口,在BP.WF.Dev2Interface.cs上面的静态方法,前台页面通过这些静态方法通过页面于操作者提供交互数据功能交互. Port_ ...
- Tuxedo常用命令
Tuxedo常用的命令 中间件系统检查 1.日志检查清理.检查Tuxedo日志,用vi命令查看日志文件内容,检查有无Tuxedo系统出错记录:检查有无服务异常错误记录:检查有无服务被重起记录:对发现的 ...
- 逗比的输入法实现(二):基础概念和常用接口
为什么叫 Meow?因为这是给猫用的输入法... 目录 (一):基本情况 (二):基础概念和常用接口 (三):整体构架 (四):编辑和候选 (五):界面管理和无界面模式 (六):词库和候选算法 (七) ...
- JDBC—01—JDBC简介;JDBC常用接口与类;
一. JDBC 简介 1 什么是 JDBC JDBC(Java DataBase Connectivity)java 数据库连接 是 JavaEE 平台下的技术规范 定义了在 Java 语言中连接数据 ...
- 盘点springmvc的常用接口
2019独角兽企业重金招聘Python工程师标准>>> 盘点springmvc的常用接口### springmvc是如今非常流行的web开发框架之一.我个人非常喜欢它约定优于配置的理 ...
- 【嵌入式】Libmodbus源码分析(二)-常用接口函数分析
00. 目录 文章目录 00. 目录 01. modbus常用接口函数概述 02. modbus辅助接口函数 03. modbus功能接口函数 04. modbus数据处理 05. 附录 01. mo ...
- HTML5 Canvas像素处理常用接口
内容概要:本文通过简单的代码实例,以及略猥琐的图片demo,展示了canvas在图像像素数据操作方面的常用接口.至于如何利用这几个接口实现更复杂的效果,则会在后续章节里继续讲述. 一.canvas图片 ...
- ElasticSearch常用命令记录
ElasticSearch常用命令记录 < - 个人学习笔记 - > 软件版本:curl -s localhost:9200/?pretty 输出中"version" ...
最新文章
- R语言使用ggplot2包的快速可视化函数qplot绘制分组箱图实战
- Expressions are not allowed at the top level
- Paxos 实现日志复制同步(Multi-Paxos)
- (33)FPGA面试技能提升篇(MIPI接口)
- seata分布式事务原理_又见分布式事务之Seata
- PHP中类重写方法,php中重写方法有什么规则
- 离散方程式matlab,matlab离散型数据拟合方程,求系数,哪个大神能说说方法
- nlu 意图识别_在NLU中,您无视危险的意图
- Modbus是什么?与RS485协议区别与联系有哪些
- HPSocket 三种模型PACK,PUSH,PULL
- turf.js字典——查询turf库的所有方法及用途
- 姿态估计1-10:FSA-Net(头部姿态估算)-源码无死角讲解(5)-Feature aggregation
- CVTE 2022届实习生 Web后台开发笔试
- 3D游戏-作业三-空间与运动
- 华为修改优先级命令_华为LTE重选参数命令简介
- OpenGL之常用方法整理
- android友盟自定义事件,友盟:自定义事件
- python 实现腾讯企业邮箱发送邮件
- 卡牌系统psv游戏推荐_《天下HD》荣获App Store首页双位推荐 全新情缘系统盘活游戏社交...
- 【JavaScript】JS校验MAC地址
热门文章
- 平面设计:创建自行车图标
- 24个超级厉害的编程思维训练方法—— 如何通过编程能力提升自己的思维能力?
- 三国志战略版鸿蒙pk,三国志战略版:PK赛季这样组队伍,能让对手打出0伤害?...
- Linux的主从数据库管理命令,数据库 命令到处
- ETH-21权益证明
- python flask-mail--实现邮件发送功能--带发送附件,压缩包,图片
- 自考《00538 中国古代文学史(一)》2023年4月历年真题答案
- 大行其道的模块化编程-CommonJS、AMD、CMD、UMD、ES6
- 加拿大最年轻两院院士全职回国!出任全国重点实验室主任
- [时态]一、一般现在时态1 英文每造一句话都要考虑时态问题