atmi常用函数列表

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

内容简介:主要介绍atmi函数族中消息,队列,事务,会话相关函数。各族函数不应在同一个层次上嵌套使用。参数都分别要显示指定,若没有,则指定为0或null.检查和确保参数有效,并且类型匹配。tperrno和tperrordetail()分别用获取错误码与详细错误信息。函数列表:ForaTaskRelatedto...UseThisCFunction...To...Buffermanagementtpalloc()Createamessagebuffertprealloc()Resizeamessagebuffertptypes()Getamessagetypeandsubtypetpfree()FreeamessagebufferClientmembershiptpchkauth()Checkwhetherauthenticationisrequiredtpinit()Joinanapplicationtpterm()LeaveanapplicationMultipleapplicationcontextmanagementtpgetctxt(3c)Retrieveanidentifierforthecurrentthread’scontexttpsetctxt(3c)Setthecurrentthread’scontextinamulticontextedprocessServiceentryandreturntpsvrinit()Initializeaservertpsvrdone()Terminateaservertpsvrthrinit()Initializeanindividualserverthreadtpsvrthrdone()Terminationcodeforanindividualserverthreadtpreturn()Endaservicefunctiontpforward()ForwardarequestDynamicadvertisementtpadvertise()Advertiseaservicenametpunadvertise()UnadvertiseaservicenameMessageprioritytpgprio()Getthepriorityofthelastrequesttpsprio()SetthepriorityofthenextrequestRequest/responsecommunicationstpcall()Initiateasynchronousrequest/responsetoaservicetpacall()Initiateanasynchronousrequesttpgetrply()Receiveanasynchronousresponsetpcancel()CancelanasynchronousrequestConversationalcommunicationtpconnect()Beginaconversationwithaservicetpdiscon()Abnormallyterminateaconversationtpsend()Sendamessageinaconversationtprecv()ReceiveamessageinaconversationReliablequeuingtpenqueue(3c)Enqueueamessagetoamessagequeuetpdequeue(3c)DequeueamessagefromamessagequeueEvent-basedtpnotify()Sendanunsolicitedmessagetoaclientcommunicationstpbroadcast()Sendmessagestoseveralclientstpsetunsol()Setunsolicitedmessagecall-backtpchkunsol()Checkthearrivalofunsolicitedmessagestppost()Postaneventmessagetpsubscribe()Subscribetoeventmessagestpunsubscribe()UnsubscribetoeventmessagesTransactionmanagementtpbegin()Beginatransactiontpcommit()Committhecurrenttransactiontpabort()Rollbackthecurrenttransactiontpgetlev()Checkwhetherintransactionmodetpsuspend()Suspendthecurrenttransactiontpresume()ResumeatransactionResourcemanagementtpopen(3c)Openaresourcemanagertpclose(3c)ClosearesourcemanagerBlockingtimemanagementtpgblktime(3c)Getblocktimevaluetpsblktime(3c)SetblocktimevalueinsecondsormillisecondsSecuritytpkey_open(3c)Openakeyhandlefordigitalsignaturegeneration,messageencryption,ormessagedecryptiontpkey_getinfo(3c)Getinformationassociatedwithakeyhandletpkey_setinfo(3c)Setoptionalattributesassociatedwithakeyhandletpkey_close(3c)Closeapreviouslyopenedhandletpsign(3c)Markatypedmessagebufferforgenerationofadigitalsignaturetpseal(3c)Markatypedmessagebufferforgenerationofanencryptionenvelopetpenvelope(3c)Accessthedigitalsignatureandrecipientinformationassociatedwithatypedmessagebuffertpexport(3c)Convertatypedmessagebufferintoanexportable,machine-independent(externalized)stringrepresentationtpimport(3c)Convertanexternalizedstringrepresentationbackintoatypedmessagebuffer我们要使用的函数一般情况下需要成对出现:同一端:tpalloc,tpfreetpinit,tptermtpsrvinit,tpsrvdonetpconnect,tpdiscontpenqueue,tpdequeuetpbegin,tpcommittpopen,tpclose两端配合:tpcall,tpreturntpacall,tpgetreply,tpreturntpsend,tprecv关于分配的缓冲区,一般应该谁分配,谁回收。函数使用说明:char*tpalloc(char*type,char*subtype,longsize)分配一个缓冲区,供后续的函数使用。返回值:若失败返回空指针,并置tperrno.inttpinit(TPINIT*tpinfo)客户端用来加入一个应用,指针值通常为空。可以不显式调用。返回值:若失败返回-1,置tperrno和tpurcode.inttpterm().在客户端程序结束时使用。若出错返回-1并置tperrno。inttpsvrinit(intargc,char**argv)由服务端调用,通常在此进行分析命令行参数和打开一个数据库连接tpopen,供后续循环体中重复利用。可以不显式调用。返回值:若失败则返回-1并且服务不会被启动。voidtpsvrdone()/*Serverterminationroutine*/与初始函数相同,主要在这里关闭数据库连接tpclose();返回值:若失败则返回负值,并且服务端被终止。inttpcall(char*svc,char*idata,longilen,char**odata,long*olen,longflags)char*svc,交易名称char*idata,tpalloc分配的缓冲区,用来描述请求,其中的type,subtype,应和服务端相匹配。longilen,对请求缓冲区的指定(idata)。对于自定义的类型,FML,FML32,VIEW,VIEW32,X_COMMON,X_C_TYPE,orSTRING,可以指定为0。char**odata,用来接收响应的缓冲区,一定不能为空。也可以和请求缓冲区共用。long*olen,odata的长度,一定不能为空。longflags:TPSIGRSTRT,若被信号中断,此调用重新执行。TPNOBLICK,若请求发送被阻塞(如资源不足,则系统管理员指定的共享资源ipc过少,)否则将会一直阻塞,直到超时。TPNOTRAN,当前操作不被当前事务所记录,亦不影响事务调度。TPNOCHANGE,当前的输出缓冲区的类型和子类型不能被改变。一般若收到的类型与期望的类型不符,tuxedo会进行自动类型转换。tuxedo系统会自动调整接收缓冲区的长度。而请求缓冲区不会被自动改变。总是应该检查与使用返回时的指针与长度值。返回值:若失败则返回-1,并置tperrno.inttpacall(char*svc,char*data,longlen,longflags)返回一个int,为呼叫描述符,作为tpgetrply的参数来收到响应。如果位于事务模式,在提交之前,必须接收到响应,除非flag为TPNORPLY。返回值:若成功返回一个描述符,供tpgetrply使用。若失败返回-1,并置tperrno.inttpgetrply(int*cd,char**data,long*len,longflags)cd为tpacall返回的描述符。若调用成功后,没有数据需要被返回,data会被置为0。此调用会阻塞直到超时。返回值:若失败返回-1,并置tperrno.inttpsprio(intprio,longflags);inttpgprio();分别用来设置与获取一个请求的优先级,并作用于tuxedo的内部队列,非/Q子系统中的queue.voidtpreturn(intrval,intrcode,char*data,longlen,longflags)用来结束当前服务例程,同时将消息返回至客户端。若出错,客户端就检查tperrno.rval:TPSUCCESS,TPFAIL,TPEXIT.仅仅告诉客户端上次调用成功或失败。rcode:用户自定义的返回值。比如可作用途:错误类型或返回字节数等。data:指示返回值数据区域。没有数据,则置null.可以使用客户端传来的地址,并进行tprealloc,但不能tpfree.也可以自行分配,并返回给客户端,但调用成功后,系统会自动回收。len:指示data长度,返回给客户端检查。客户端收到后,应检查长度是否有变化,若为0,则客户端的缓冲区之前的内容不被改变。flags:尚未使用。在tpreturn之前如果使用tpacall,则应等待或使用tpgetrply或tpcancel取消之前的请求。若调用失败,而客户端期望数据返回,则没有数据返回,客户端应检查tperrno,并且客户端的缓冲区的内容与长度保持不变。若tpreturn返回的数据未被客户端识别,tpcall的返回值未知,此时应检查tper

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功