-收集整理 4與請求TUXEDO SERVER 有關(guān)的ATMI 1與緩沖區使用有關(guān)的ATMI 1.1tpalloc char * tpalloc(char *type, char *subtype, long size) 描述:分配緩沖區 參數:type:緩沖區的類(lèi)型 subtype:緩沖區的子類(lèi)型,只有VIEW有子類(lèi)型,其他的緩沖區該參數要設為NULL long:緩沖區的大小 返回值: 成功返回一個(gè)指向所分配空間首地址的CHAR *形指針,失敗返回NULL。 1.2tprealloc char * tprealloc(char *ptr, long size) 描述:重新分配緩沖區 參數:ptr:指向原緩沖區首地址的指針 size:新緩沖區的大小 返回值: 成功返回一個(gè)指向新分配空間首地址的CHAR *形指針,失敗返回NULL。 1.3tpfree void tpfree(char *bufptr) 描述:釋放由TPALLOC()或TPREALLOC()分配的緩沖區 參數:bufptr:指向要釋放的緩沖區首地址的指針 返回值:無(wú) 注意: 用TPALLOC(),TPREALLOC()分配的內存只能有TPFREE()釋放掉,不能用FREE() 1.4tptypes long tptypes(char *ptr, char *type, char *subtype) 描述:返回有ptr所指向的緩沖區的類(lèi)型及子類(lèi)型 參數: ptr:指向要進(jìn)行類(lèi)型識別的緩沖區首地址的指針 type:類(lèi)型名 subtype:子類(lèi)型名(只對VIEW類(lèi)型有效) 返回值:0成功,-1失敗, 錯誤號保存在全局變量tperrno中。 2常用的FML(FML32)操作函數 2.1Falloc FBFR* Falloc (FLDOCC F, FLDLEN V) 描述: 分配一塊FML緩沖區 參數: FLDOCC: 該FML緩沖區的字段個(gè)數, FLDLEN: 該FML緩沖區的長(cháng)度 返回值:成功返回一個(gè)指向該FML緩沖區首地址的指針,失敗返回NULL,錯誤號保存在全局 變量Ferror中 注意: 該FML緩沖區不能用于TPCALL(),TPACALL(),TPRETURN()等中,在這些函數中用到 的FML緩沖區只能用TPALLOC()分配。 2.2Finit int Finit(FBFR *fbfr, FLDLEN buflen) 描述: 初始化該FML緩沖區 參數: fbfr: 一個(gè)指向該FML緩沖區首地址的指針 buflen: 該FML緩沖區的長(cháng)度 返回值:失敗為-1, 錯誤號保存在全局變量Ferror中 2.3Fadd int Fadd(FBFR *fbfr, FLDID fieldid, char *value, FLDLEN len) 描述: 往FML緩沖區fbfr中ID為fieldid的字段增加一個(gè)值value 參數: fbfr: 指向該FML緩沖區首地址的指針 fieldid: 要增加的字段的ID value: 要增加的值,如果時(shí)其他類(lèi)型的要轉化為char * len: 該字段的長(cháng)度,如果不時(shí)CARRARY類(lèi)型的,可設為0 返回值: 失敗為-1, 錯誤號保存在全局變量Ferror中 2.4Fchg int Fchg(FBFR *fbfr, FLDID fieldid,int occ, char *value, FLDLEN len) 描述: 改變fbfr中ID為fieldid字段的值。 參數: fbfr: 指向該FML緩沖區首地址的指針 fieldid: 要增加的字段的ID value: 該字段的新值,如果時(shí)其他類(lèi)型的要轉化為char * len: 該字段的長(cháng)度,如果不時(shí)CARRARY類(lèi)型的,可設為0 返回值:失敗為-1,錯誤號保存在全局變量Ferror中 2.5Fget int Fget(FBFR *fbfr, FLDID fieldid,int occ, char *value, FLDLEN *maxlen) 描述: 從fbfr緩沖區中取ID為fieldid字段的值到value中。 參數: fbfr: 指向該FML緩沖區首地址的指針 fieldid: 字段的ID value: 取出的值保存到該指針指向的地址中 maxlen: 可以COPY到緩沖區value中的字符串的長(cháng)度,返回值為真正COPY到該緩沖區的字 符串的長(cháng)度 返回值:失敗為-1, 錯誤號保存在全局變量Ferror中 2.5Fprint Fprint(FBFR *fbfr) 描述: 按格式打印fbfr緩沖區的內容。一般用于程序調試中。 參數: fbfr: 指向該FML緩沖區首地址的指針 返回值:失敗為-1, 錯誤號保存在全局變量Ferror中 2.6Ferror Ferror: 和C語(yǔ)言中的errno類(lèi)似,當調用FML(FML32)函數出錯時(shí),把錯誤號保存在全局變量Ferror中。 char * Fstrerror(int err) 描述:返回錯誤號為err的錯誤描述 參數:err: Ferror的值 返回值:成功返回錯誤描述,失敗返回NULL 3連接的建立與斷開(kāi)有關(guān)的ATMI 3.1tpchkauthint tpchkauth() 描述: 檢查該TUXEDO SERVER所采用的安全方式 參數:無(wú) 返回值: TPNOAUTH:不需要認證 TPSYSAUTH:需要口令認證 TPAPPSUTH:需要口令認證,并且還需要應用級的認證或授權. -1:調用失敗, 錯誤號保存在全局變量tperrno中。 3.2tpinit int tpinit(TPINIT *tpinfo) 描述: 與TUXEDO SERVER建立連接 參數:TPINFO 返回值: 失敗返回-1, 錯誤號保存在全局變量tperrno中。 TPINIT結構體在atmi.h中的定義如下 struct tpinfo_t { char usrname[MAXTIDENT+2]; /* client user name */ char cltname[MAXTIDENT+2]; /* application client name */ char passwd[MAXTIDENT+2]; /* application password */ char grpname[MAXTIDENT+2]; /* client group name */ long flags; /* initialization flags */ long datalen; /* length of app specific data */ long data; /* placeholder for app data */ }; typedef struct tpinfo_t TPINIT; 說(shuō)明:username,cltname,passwd,grpname,data,datalen用于安全認證中 flags:用于定義以何種方式通知該客戶(hù)端一個(gè)UNSOLICTED MESSAGE的到來(lái).它的值可以為: TPU-SIG TPU-DIP TPU-IGN TPSA-FASTPATH TPSA-PROTECTED 3.3tpterm int tpterm() 描述: 斷開(kāi)與TUXEDO SERVER建立連接 參數:無(wú) 返回值: 失敗返回-1, 錯誤號保存在全局變量tperrno中。 4與請求TUXEDO SERVER 有關(guān)的ATMI 4.1tpcallint tpcall(char *svc, char *idata, long ilen, char **odata, long *olen, long flags) 描述:客戶(hù)端同步調用服務(wù)端的名為svc的SERVICE, 參數: *svc:SERVICE的名稱(chēng) char *idata: 輸入緩沖區的地址,客戶(hù)端傳給服務(wù)端的參數放在該緩沖區內 long ilen: 輸入緩沖區的長(cháng)度 char **odata 輸出緩沖區的地址,服務(wù)端傳給客戶(hù)端的結果放在該緩沖區內 long *olen:輸出緩沖區的長(cháng)度 long flags: 調用標志,由以下幾個(gè): TPNOTRAN 如果調用svc的客戶(hù)端當前在TRANSACTION方式下,那么svc不參與當前的TRANSACTION。 TPNOCHANGE 如果服務(wù)端返回的緩沖區類(lèi)型與客戶(hù)端定義的緩沖區(odata)類(lèi)型不一致,默認情況下,odata會(huì )轉換成與服務(wù)端返回的緩沖區類(lèi)型一致的類(lèi)型,如果設置了該FLAG,那么當出現這種情況時(shí),不進(jìn)行緩沖區類(lèi)型轉換,并且會(huì )保錯。 TPNOBLOCK 默認情況下,如果客戶(hù)端有阻塞條件存在(如CLIENT的TCP/IP中的緩沖區滿(mǎn),磁盤(pán)I/O忙等),那么客戶(hù)端會(huì )阻塞在那里,直到阻塞消除或超時(shí)出錯。如果設置了TPNOBLOCK,當客戶(hù)端有阻塞條件存在時(shí),TPCALL()會(huì )立刻返回并報錯. 注意TPNOBLOCK只對發(fā)送請求時(shí)起作用,如果在接收服務(wù)端返回的結果時(shí)有阻塞條件存在,客戶(hù)端會(huì )在那里等待,直到阻塞消除或超時(shí)出錯 TPNOTIME 如果客戶(hù)端有阻塞條件存在,客戶(hù)端會(huì )一直阻塞在那里,即使到了超時(shí)時(shí)間也不返回,但如果該客戶(hù)端是在TRANSACTION模式下,當到了 事務(wù)的超時(shí)時(shí)間,還是會(huì )報超時(shí)錯誤并返回。 TPSIGRSTRT 如果在進(jìn)行系統調用時(shí),被信號中斷,該系統調用會(huì )重新進(jìn)行。 調用成功返回0,失敗返回-1, 錯誤號保存在全局變量tperrno中。 4.2tpacall int tpacall(char *svc, char *data, long len, long flags) 描述: 客戶(hù)端異步調用服務(wù)端的名為svc的SERVICE,不等服務(wù)端返回結果,程序可繼續往 下走,在某個(gè)地方調用tpgetrply()取的服務(wù)端的返回 參數: char *svc, char *data, long len參數的含義與tpcall()中的一樣 flags 可設置為:TPN |
聯(lián)系客服