![atmi常用函數(shù)列表_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/7/520c81b2-ffc5-4bbd-b938-8990a9f71dda/520c81b2-ffc5-4bbd-b938-8990a9f71dda1.gif)
![atmi常用函數(shù)列表_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/7/520c81b2-ffc5-4bbd-b938-8990a9f71dda/520c81b2-ffc5-4bbd-b938-8990a9f71dda2.gif)
![atmi常用函數(shù)列表_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/7/520c81b2-ffc5-4bbd-b938-8990a9f71dda/520c81b2-ffc5-4bbd-b938-8990a9f71dda3.gif)
![atmi常用函數(shù)列表_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/7/520c81b2-ffc5-4bbd-b938-8990a9f71dda/520c81b2-ffc5-4bbd-b938-8990a9f71dda4.gif)
![atmi常用函數(shù)列表_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-3/7/520c81b2-ffc5-4bbd-b938-8990a9f71dda/520c81b2-ffc5-4bbd-b938-8990a9f71dda5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、內(nèi)容簡(jiǎn)介:主要介紹atmi函數(shù)族中消息,隊(duì)列,事務(wù),會(huì)話相關(guān)函數(shù)。各族函數(shù)不應(yīng)在同一個(gè)層次上嵌套使用。參數(shù)都分別要顯示指定,若沒(méi)有,則指定為0或null. 檢查和確保參數(shù)有效,并且類型匹配。tperrno和tperrordetail()分別用獲取錯(cuò)誤碼與詳細(xì)錯(cuò)誤信息。函數(shù)列表:For a Task Related to . . . Use This C Function . . . To . . . Buffer management tpalloc() Create a message buffer tprealloc() Resize a message buffer tptypes()
2、Get a message type and subtype tpfree() Free a message buffer Client membership tpchkauth() Check whether authentication is required tpinit() Join an application tpterm() Leave an application Multiple application context management tpgetctxt(3c) Retrieve an identifier for the current threads context
3、 tpsetctxt(3c) Set the current threads context in a multicontexted process Service entry and return tpsvrinit() Initialize a server ·tpsvrdone() Terminate a server tpsvrthrinit() Initialize an individual server thread tpsvrthrdone() Termination code for an individual server thread tpreturn() En
4、d a service function tpforward() Forward a request Dynamic advertisement tpadvertise() Advertise a service name tpunadvertise() Unadvertise a service name Message priority tpgprio() Get the priority of the last request tpsprio() Set the priority of the next request Request/response communications tp
5、call() Initiate a synchronous request/response to a service ·tpacall() Initiate an asynchronous request tpgetrply() Receive an asynchronous response tpcancel() Cancel an asynchronous request Conversational communication tpconnect() Begin a conversation with a service tpdiscon() Abnormally termi
6、nate a conversation tpsend() Send a message in a conversation tprecv() Receive a message in a conversation Reliable queuing tpenqueue(3c) Enqueue a message to a message queue tpdequeue(3c) Dequeue a message from a message queue Event-based communications tpnotify() Send an unsolicited message to a c
7、lient tpbroadcast() Send messages to several clients tpsetunsol() Set unsolicited message call-back tpchkunsol() Check the arrival of unsolicited messages tppost() Post an event message tpsubscribe() Subscribe to event messages tpunsubscribe() Unsubscribe to event messages Transaction management tpb
8、egin() Begin a transaction tpcommit() Commit the current transaction tpabort() Roll back the current transaction tpgetlev() Check whether in transaction mode tpsuspend() Suspend the current transaction tpresume() Resume a transaction Resource management tpopen(3c) Open a resource manager tpclose(3c)
9、 Close a resource manager Blocking time management tpgblktime(3c) Get blocktime value tpsblktime(3c) Set blocktime value in seconds or milliseconds Security tpkey_open(3c) Open a key handle for digital signature generation, message encryption, or message decryption tpkey_getinfo(3c) Get information
10、associated with a key handle tpkey_setinfo(3c) Set optional attributes associated with a key handle tpkey_close(3c) Close a previously opened handle tpsign(3c) Mark a typed message buffer for generation of a digital signature tpseal(3c) Mark a typed message buffer for generation of an encryption env
11、elope tpenvelope(3c) Access the digital signature and recipient information associated with a typed message buffer tpexport(3c) Convert a typed message buffer into an exportable, machine-independent (externalized) string representation tpimport(3c) Convert an externalized string representation back
12、into a typed message buffer 我們要使用的函數(shù)一般情況下需要成對(duì)出現(xiàn):同一端:tpalloc,tpfreetpinit,tptermtpsrvinit,tpsrvdonetpconnect,tpdiscontpenqueue,tpdequeuetpbegin,tpcommittpopen,tpclose兩端配合:tpcall,tpreturntpacall,tpgetreply,tpreturntpsend,tprecv關(guān)于分配的緩沖區(qū),一般應(yīng)該誰(shuí)分配,誰(shuí)回收。函數(shù)使用說(shuō)明:char*tpalloc(char *type, char *subtype, long si
13、ze)分配一個(gè)緩沖區(qū),供后續(xù)的函數(shù)使用。返回值:若失敗返回空指針,并置 tpinit (TPINIT *tpinfo) 客戶端用來(lái)加入一個(gè)應(yīng)用,指針值通常為空。可以不顯式調(diào)用。返回值:若失敗返回-1,置tperrno和 tpterm().在客戶端程序結(jié)束時(shí)使用。若出錯(cuò)返回-1并置tpsvrinit(int argc, char *argv)由服務(wù)端調(diào)用,通常在此進(jìn)行分析命令行參數(shù)和打開(kāi)一個(gè)數(shù)據(jù)庫(kù)連接tpopen,供后續(xù)循環(huán)體中重復(fù)利用。 可以不顯式調(diào)用。返回值: 若失敗則返回-1并且服務(wù)不會(huì)被啟動(dòng)。voidtpsvrdone(
14、) /* Server termination routine */與初始函數(shù)相同,主要在這里關(guān)閉數(shù)據(jù)庫(kù)連接tpclose();返回值: 若失敗則返回負(fù)值,并且服務(wù)端被終止。inttpcall(char *svc, char *idata, long ilen, char *odata, long *olen, long flags) char *svc, 交易名稱char *idata, tpalloc分配的緩沖區(qū),用來(lái)描述請(qǐng)求,其中的type,subtype,應(yīng)和服務(wù)端相匹配。long ilen, 對(duì)請(qǐng)求緩沖區(qū)的指定(idata)。對(duì)于自定義的類型,F(xiàn)ML, FML32, VIEW, VI
15、EW32, X_COMMON, X_C_TYPE, or STRING,可以指定為0。char *odata, 用來(lái)接收響應(yīng)的緩沖區(qū),一定不能為空。也可以和請(qǐng)求緩沖區(qū)共用。long *olen, odata的長(zhǎng)度,一定不能為空。long flags:TPSIGRSTRT,若被信號(hào)中斷,此調(diào)用重新執(zhí)行。TPNOBLICK,若請(qǐng)求發(fā)送被阻塞(如資源不足,則系統(tǒng)管理員指定的共享資源ipc過(guò)少,)否則將會(huì)一直阻塞,直到超時(shí)。TPNOTRAN,當(dāng)前操作不被當(dāng)前事務(wù)所記錄,亦不影響事務(wù)調(diào)度。TPNOCHANGE, 當(dāng)前的輸出緩沖區(qū)的類型和子類型不能被改變。一般若收到的類型與期望的類型不符,tuxedo會(huì)進(jìn)
16、行自動(dòng)類型轉(zhuǎn)換。tuxedo系統(tǒng)會(huì)自動(dòng)調(diào)整接收緩沖區(qū)的長(zhǎng)度。而請(qǐng)求緩沖區(qū)不會(huì)被自動(dòng)改變??偸菓?yīng)該檢查與使用返回時(shí)的指針與長(zhǎng)度值。返回值:若失敗則返回-1,并置tpacall(char *svc, char *data, long len, long flags) 返回一個(gè)int,為呼叫描述符,作為tpgetrply的參數(shù)來(lái)收到響應(yīng)。如果位于事務(wù)模式,在提交之前,必須接收到響應(yīng),除非flag為T(mén)PNORPLY。返回值:若成功返回一個(gè)描述符,供tpgetrply使用。若失敗返回-1,并置tpgetrply(int *cd, char *data, lon
17、g *len, long flags) cd為tpacall返回的描述符。若調(diào)用成功后,沒(méi)有數(shù)據(jù)需要被返回,data會(huì)被置為0。此調(diào)用會(huì)阻塞直到超時(shí)。返回值: 若失敗返回-1,并置tpsprio(int prio, long flags);inttpgprio();分別用來(lái)設(shè)置與獲取一個(gè)請(qǐng)求的優(yōu)先級(jí),并作用于tuxedo的內(nèi)部隊(duì)列,非/Q子系統(tǒng)中的queue.voidtpreturn(int rval, int rcode, char *data, long len, long flags)用來(lái)結(jié)束當(dāng)前服務(wù)例程,同時(shí)將消息返回至客戶端。若出錯(cuò),客戶端就檢查tperrno.
18、rval: TPSUCCESS, TPFAIL, TPEXIT.僅僅告訴客戶端上次調(diào)用成功或失敗。rcode: 用戶自定義的返回值。比如可作用途:錯(cuò)誤類型或返回字節(jié)數(shù)等。data: 指示返回值數(shù)據(jù)區(qū)域。沒(méi)有數(shù)據(jù),則置null. 可以使用客戶端傳來(lái)的地址,并進(jìn)行tprealloc,但不能tpfree. 也可以自行分配,并返回給客戶端,但調(diào)用成功后,系統(tǒng)會(huì)自動(dòng)回收。len: 指示data長(zhǎng)度,返回給客戶端檢查。 客戶端收到后,應(yīng)檢查長(zhǎng)度是否有變化,若為0,則客戶端的緩沖區(qū)之前的內(nèi)容不被改變。flags: 尚未使用。在tpreturn之前如果使用tpacall,則應(yīng)等待或使用tpgetrply或tp
19、cancel取消之前的請(qǐng)求。若調(diào)用失敗,而客戶端期望數(shù)據(jù)返回,則沒(méi)有數(shù)據(jù)返回,客戶端應(yīng)檢查tperrno,并且客戶端的緩沖區(qū)的內(nèi)容與長(zhǎng)度保持不變。若tpreturn返回的數(shù)據(jù)未被客戶端識(shí)別,tpcall的返回值未知,此時(shí)應(yīng)檢查tperrno(應(yīng)為T(mén)PEOTYPE)。同時(shí)客戶端的緩沖未改變。如果發(fā)生超時(shí),則tperrno為T(mén)PETIME,則沒(méi)有數(shù)據(jù)返回,并且客戶端的緩沖區(qū)的內(nèi)容與長(zhǎng)度保持不變。返回值: 若失敗返回-1,并置tperrno. voidtpcancel(int cd)cd: 為呼叫標(biāo)識(shí)符,tpacall的返回值 。若使用tpgetrply超時(shí)后,可以使用此函數(shù)進(jìn)行取消本次呼叫(tpa
20、call)。此后,即使有響應(yīng),也會(huì)被系統(tǒng)丟棄。返回值: 若失敗返回-1,并置tperrno.voidtpforward(char *svc, char *data, long len, long flags)參數(shù)意義與tpcall的相同,但建議data要使用客戶端所分配的地址。此時(shí)由svc_c將數(shù)據(jù)返回至client. 一旦調(diào)用rpforward后,則控制權(quán)再度返回至main函數(shù)。返回值: 無(wú).void.tpsend,tprecv用于一個(gè)會(huì)話內(nèi)。tpabort用來(lái)終止事務(wù),tpcancel用于終止請(qǐng)求。inttpconnect(char *name, char *data, long len,
21、 long flags)用于建立一個(gè)會(huì)話。name,交易名稱。data建立連接的同時(shí)也可以發(fā)送第一個(gè)請(qǐng)求。返回值為連接描述符,整型。供rpsend,tprecb的第一個(gè)參數(shù)使用。一個(gè)客戶端可以同時(shí)加入多達(dá)64個(gè)會(huì)話。返回值: 若成功,一個(gè)連接描述符被返回,供后續(xù)調(diào)用使用。若失敗返回-1,并置tpsend(int cd, char *data, long len, long flags, long *revent)調(diào)用完成后,代表對(duì)此半雙工的控制權(quán)被釋放。服務(wù)端可以從main函數(shù)的TPSVCINFO結(jié)構(gòu)體的data,len來(lái)獲得緩沖區(qū)。客戶端則可以置data為0表示沒(méi)有數(shù)據(jù)
22、要發(fā)送。返回值: 若成功則revent置為 TPEV_SVCSUCC or TPEV_SVCFAIL, tpurcode()也有相應(yīng)值可用。若失敗則返回-1,且tperrno 置為T(mén)PEEVENT inttprecv(int cd, char *data, long *len, long flags, long *revent)服務(wù)端可從從main函數(shù)的TPSVCINFO結(jié)構(gòu)體的成員來(lái)獲得cd. 返回值: 若成功則revent置為 TPEV_SVCSUCC or TPEV_SVCFAIL, tpurcode()也有相應(yīng)值可用。若失敗則返回-1,且tperrno 置為T(mén)PEEVENT 結(jié)束一個(gè)會(huì)
23、話:情形1:管道雙端對(duì)應(yīng)的事件sendonly,recvonly是相對(duì)應(yīng)的。管理的控制權(quán)指示的是寫(xiě)管道的權(quán)限。發(fā)起連接時(shí),b為只讀。a發(fā)送后,b即將得管道控制權(quán)。此時(shí)b收到的事件為sendonly,b收取后,正式獲得寫(xiě)權(quán)限。b return后,斷開(kāi)連接。并發(fā)送給a一個(gè)事件TPEV_SVCSUCC。a recv后,獲知事件,會(huì)話終結(jié)。同時(shí)收到數(shù)據(jù)。情形2:多層次會(huì)話會(huì)話b中允許再進(jìn)行tpcall,tpacall,但tpforward被禁止。多層次的會(huì)話需要很小心地,有次序地進(jìn)行釋放連接。inttpdiscon(int cd)只有客戶端才能使用tpdiscon來(lái)強(qiáng)制關(guān)閉一個(gè)連接。但同時(shí)數(shù)據(jù)會(huì)丟失。
24、推薦使用tpreturn來(lái)結(jié)束會(huì)話。返回值: 若失敗返回-1,并置tpbegin(unsigned long timeout, long flags)timeout, 事務(wù)超時(shí)值。 一般應(yīng)大于tuxconfig中的SCANUNIT(系統(tǒng)檢測(cè)事務(wù)發(fā)生回滾,提交,失敗等事件的周期)。flags,當(dāng)前未使用,必須為0。若一個(gè)進(jìn)程位于事務(wù)模式,并且發(fā)出一個(gè)請(qǐng)求(TONOTRAN),事務(wù)仍會(huì)因?yàn)閠pcall的超時(shí)而超時(shí)。若已處于事務(wù)模式,則不能再次tpbegin一個(gè)事務(wù)。若重復(fù)開(kāi)始,會(huì)導(dǎo)致此調(diào)用失敗,但對(duì)原來(lái)事務(wù)不產(chǎn)生影響。 事務(wù)內(nèi)可建立會(huì)話。返回值: 若失敗返回-1,并置tper
25、tpcommit(long flags)在tpcommit之前,應(yīng)該檢查tperrno = TPETIME,并收到所有的響應(yīng)。否在超時(shí)的情況下或有未決消息時(shí),調(diào)用tpcommit將導(dǎo)致事務(wù)自動(dòng)abort。應(yīng)手動(dòng)顯式tpabort。 tpbegin,tpcommit應(yīng)由同一個(gè)客戶端進(jìn)行調(diào)用??梢栽趖uxconfig中調(diào)整事務(wù)的兩階段提交策略。事務(wù)模式下不應(yīng)使用tpterm. 而服務(wù)端的tpreturn,tpforward應(yīng)謹(jǐn)慎使用,要確保返回前所有的請(qǐng)求進(jìn)行過(guò)應(yīng)答收取。返回值: 若失敗返回-1,并置tpabort(long flags)將導(dǎo)致操作回滾,所有的呼
26、叫描述符失效。返回值: 若失敗返回-1,并置tperrno.暫停與恢復(fù)事務(wù),flags未使用。inttpsuspend(TPTRANID *t_id,long flags)inttpresume(TPTRANID *t_id,long flags)通常暫停一個(gè)事務(wù),再開(kāi)啟一個(gè)子事務(wù),如日志操作。暫停事務(wù)之前,所有的請(qǐng)求應(yīng)顯式進(jìn)行收取響應(yīng)。推薦在同一個(gè)客戶端內(nèi)進(jìn)行事務(wù)的暫停與恢復(fù)。typed buffers 主要類型:所有 的類型定義在tmtypesw.c在 $TUXDIR/lib目錄下,最終會(huì)被編譯成庫(kù),為客戶端和服務(wù)端可見(jiàn)。下文中的size除了string.carry,使用,其它的類型都不使
27、用。CARRAY 類似于二進(jìn)制數(shù)組。STRING 字符數(shù)組,以null結(jié)尾。FML 類似于結(jié)構(gòu)體自解釋,每個(gè)字段都有標(biāo)識(shí)符,引用計(jì)數(shù),長(zhǎng)度。使用fml相關(guān)的函數(shù)來(lái)操作此緩沖。VIEW 自定義的一個(gè)c結(jié)構(gòu)體。 XML XML文件格式,需要有相應(yīng)的解釋器來(lái)解析此緩沖。在view描述文件中可以定義其結(jié)構(gòu):$ /* View data structure */ VIEW MYVIEW #type cname
28、160; fbname count flag size null float float1 - 1 - - - double double1
29、160; - 1 - - - long long1 - 1 - - - short short1
30、; - 1 - - - int int1 - 1 - - - dec_t dec1
31、 - 1 - 9,16 - char char1 - 1 - - - string string1
32、; - 1 - 20 - carray carray1 - 2 CL 20 - bool bool1
33、 signedchar signedchar1 unsignedchar unsignedchar1 wchar_t wchar_t1 unsignedint unsignedint1
34、160; unsignedlong unsignedlong1 longlong longlong1 unsignedlonglong unsignedlonglong1 longdouble longdouble1
35、0;struct struct1 ENDviewc -n myview.v 編譯文件后對(duì)應(yīng)生成的c結(jié)構(gòu)體如下:struct MYVIEW float float1; double double1; long long1; short short1; int int1; dec_t dec1; char char1; char string120; unsigned short L_carray12; /* length array of carray1 */ sh
36、ort C_carray1; /* count of carray1 */ char carray1220; bool bool1 signedchar signedchar1 unsignedchar unsignedchar1
37、160; wchar_t wchar_t1 unsignedint unsignedint1 unsignedlong unsignedlong1 longlong
38、; longlong1 unsignedlonglong unsignedlonglong1 longdouble longdouble1 struct struct1;fml描述文件:# name number(此域的相對(duì)位移) type flags comments FLOAT1 110 float - - DOUBLE1 111 double - - LONG1 112 long - - SHORT1 113 short - - INT1 114 long - - DEC1 115 string
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2022年新課標(biāo)八年級(jí)上冊(cè)道德與法治《3.1 維護(hù)秩序 》聽(tīng)課評(píng)課記錄
- 【2022年新課標(biāo)】部編版七年級(jí)上冊(cè)道德與法治8.1 生命可以永恒嗎 聽(tīng)課評(píng)課記錄
- 河北省七年級(jí)歷史下冊(cè)第三單元明清時(shí)期:統(tǒng)一多民族國(guó)家的鞏固與發(fā)展第20課清朝君主專制的強(qiáng)化聽(tīng)課評(píng)課記錄(新人教版)
- 湘教版數(shù)學(xué)八年級(jí)上冊(cè)《小結(jié)練習(xí)》聽(tīng)評(píng)課記錄2
- 湘教版數(shù)學(xué)九年級(jí)下冊(cè)4.1《隨機(jī)事件與可能性》聽(tīng)評(píng)課記錄1
- 統(tǒng)編版七年級(jí)下冊(cè)道德與法治第四單元整體聽(tīng)課評(píng)課記錄
- 《百家爭(zhēng)鳴》名師聽(tīng)課評(píng)課記錄(新部編人教版七年級(jí)上冊(cè)歷史)
- 新人教版七年級(jí)地理上冊(cè)《4.1人口與人種(第1課時(shí)世界人口的增長(zhǎng)世界人口的分布)》聽(tīng)課評(píng)課記錄
- 場(chǎng)地使用安全協(xié)議書(shū)范本
- 北師大版道德與法治七年級(jí)上冊(cè)2.2《學(xué)習(xí)風(fēng)向標(biāo)》聽(tīng)課評(píng)課記錄
- 2024年鐵嶺衛(wèi)生職業(yè)學(xué)院高職單招職業(yè)技能測(cè)驗(yàn)歷年參考題庫(kù)(頻考版)含答案解析
- 《中國(guó)的宗教》課件
- 2025年山東魯商集團(tuán)有限公司招聘筆試參考題庫(kù)含答案解析
- 大型活動(dòng)中的風(fēng)險(xiǎn)管理與安全保障
- 課題申報(bào)書(shū):個(gè)體衰老差異視角下社區(qū)交往空間特征識(shí)別與優(yōu)化
- 江蘇省招標(biāo)中心有限公司招聘筆試沖刺題2025
- 綜采工作面過(guò)空巷安全技術(shù)措施
- 云南省麗江市2025屆高三上學(xué)期復(fù)習(xí)統(tǒng)一檢測(cè)試題 物理 含解析
- 建材材料合作合同范例
- 2025年集體經(jīng)濟(jì)發(fā)展計(jì)劃
- 病歷書(shū)寫(xiě)規(guī)范細(xì)則(2024年版)
評(píng)論
0/150
提交評(píng)論