<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Vincent.Chan‘s Blog

    常用鏈接

    統計

    積分與排名

    網站

    最新評論

    TUXEDO函數說明

    TUXEDO函數說明

    -收集整理

    ?

    1與緩沖區使用有關的ATMI2

    1.1tpalloc. 2

    1.2tprealloc. 2

    1.3tpfree. 2

    1.4tptypes. 2

    2常用的FML(FML32)操作函數... 3

    2.1Falloc. 3

    2.2Finit3

    2.3Fadd. 3

    2.4Fchg. 3

    2.5Fget4

    2.5Fprint4

    2.6Ferror4

    3連接的建立與斷開有關的ATMI5

    3.1tpchkauth. 5

    3.2tpinit5

    3.3tpterm.. 6

    4與請求TUXEDO SERVER 有關的ATMI6

    4.1tpcall6

    4.2tpacall7

    4.3tpgetrply. 7

    4.4tpcancel7

    4.5tpgprio. 8

    4.6tpsprio. 8

    5與請求錯誤處理有關的ATMI8

    5.1tpstrerror8

    5.2tperrordetail9

    5.3tpstrerrordetail9

    ?


    ?

    1 與緩沖區使用有關的 ATMI

    1.1tpalloc

    char * tpalloc(char *type, char *subtype, long size)

    描述:分配緩沖區

    參數:type:緩沖區的類型

    ??? subtype:緩沖區的子類型,只有VIEW有子類型,其他的緩沖區該參數要設為NULL

    ??? long:緩沖區的大小

    返回值: 成功返回一個指向所分配空間首地址的CHAR *形指針,失敗返回NULL。

    1.2tprealloc

    char * tprealloc(char *ptr, long size)

    描述:重新分配緩沖區

    參數:ptr:指向原緩沖區首地址的指針

    ??? size:新緩沖區的大小

    返回值: 成功返回一個指向新分配空間首地址的CHAR *形指針,失敗返回NULL。

    1.3tpfree

    void tpfree(char *bufptr)

    描述:釋放由TPALLOC()或TPREALLOC()分配的緩沖區

    參數:bufptr:指向要釋放的緩沖區首地址的指針

    返回值:無

    注意: 用TPALLOC(),TPREALLOC()分配的內存只能有TPFREE()釋放掉,不能用FREE()

    1.4tptypes

    long tptypes(char *ptr, char *type, char *subtype)

    描述:返回有ptr所指向的緩沖區的類型及子類型

    參數: ptr:指向要進行類型識別的緩沖區首地址的指針

    type:類型名

    subtype:子類型名(只對VIEW類型有效)

    返回值:0成功,-1失敗, 錯誤號保存在全局變量tperrno中。

    ?

    2 常用的 FML(FML32) 操作函數

    2.1Falloc

    FBFR*? Falloc (FLDOCC F, FLDLEN V)

    描述: 分配一塊FML緩沖區

    參數:

    ??? FLDOCC: 該FML緩沖區的字段個數,

    ??? FLDLEN: 該FML緩沖區的長度

    返回值:成功返回一個指向該FML緩沖區首地址的指針,失敗返回NULL,錯誤號保存在全局

    變量Ferror中

    注意:?? 該FML緩沖區不能用于TPCALL(),TPACALL(),TPRETURN()等中,在這些函數中用到

    FML緩沖區只能用TPALLOC()分配。

    2.2Finit

    int Finit(FBFR *fbfr, FLDLEN buflen)

    描述: 初始化該FML緩沖區

    參數:

    ?? fbfr: 一個指向該FML緩沖區首地址的指針

    ?? buflen: 該FML緩沖區的長度

    返回值:失敗為-1, 錯誤號保存在全局變量Ferror中

    2.3Fadd

    int Fadd(FBFR *fbfr, FLDID fieldid, char *value, FLDLEN len)

    ?

    描述: 往FML緩沖區fbfr中ID為fieldid的字段增加一個值value

    參數:

    fbfr:??? 指向該FML緩沖區首地址的指針

    fieldid: 要增加的字段的ID

    value:?? 要增加的值,如果時其他類型的要轉化為char *

    len:???? 該字段的長度,如果不時CARRARY類型的,可設為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:?? 該字段的新值,如果時其他類型的要轉化為char *

    len:???? 該字段的長度,如果不時CARRARY類型的,可設為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中的字符串的長度,返回值為真正COPY到該緩沖區的字

    符串的長度

    返回值:失敗為-1, 錯誤號保存在全局變量Ferror中

    2.5Fprint

    Fprint(FBFR *fbfr)

    描述: 按格式打印fbfr緩沖區的內容。一般用于程序調試中。

    參數:

    fbfr:??? 指向該FML緩沖區首地址的指針

    返回值:失敗為-1, 錯誤號保存在全局變量Ferror中

    2.6Ferror

    Ferror

    C語言中的errno類似,當調用FML(FML32)函數出錯時,把 錯誤號保存在全局變量Ferror中。

    char *? Fstrerror(int err)

    描述:返回錯誤號為err 錯誤描述

    參數:err: Ferror的值

    返回值:成功返回 錯誤描述, 失敗返回NULL

    3 連接的建立與斷開有關的 ATMI

    3.1tpchkauth

    int tpchkauth()

    描述: 檢查該TUXEDO SERVER所采用的安全方式

    參數:無

    返回值:

    ????? 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 */

    };

    typedefstruct? tpinfo_t TPINIT;

    說明:username,cltname,passwd,grpname,data,datalen用于安全認證中

    flags:用于定義以何種方式通知該客戶端一個UNSOLICTED MESSAGE的到來.它的值可以為:

    TPU-SIG

    TPU-DIP

    TPU-IGN

    TPSA-FASTPATH

    TPSA-PROTECTED

    3.3tpterm

    int tpterm()

    描述: 斷開與TUXEDO SERVER建立連接

    參數:無

    返回值: 失敗返回-1, 錯誤號保存在全局變量tperrno中。


    4.1tpcall

    int tpcall(char *svc, char *idata, long ilen, char **odata, long?? *olen, long flags)

    描述:客戶端同步調用服務端的名為svc的SERVICE,

    參數:

    *svc:SERVICE的名稱

    char *idata: 輸入緩沖區的地址,客戶端傳給服務端的參數放在該緩沖區內

    long ilen:?? 輸入緩沖區的長度

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

    ?

    4.2tpacall

    int tpacall(char *svc, char *data, long len, long flags)

    描述:? 客戶端異步調用服務端的名為svc的SERVICE,不等服務端返回結果,程序可繼續往

    下走,在某個地方調用tpgetrply()取的服務端的返回

    參數:

    char *svc, char *data, long len參數的含義與tpcall()中的一樣

    flags 可設置為:TPNOTRAN, TPNOREPLY, TPNOBLOCKTPNOTIME, TPSIGRSTRT.

    TPNOTRAN, TPNOBLOCKTPNOTIME, TPSIGRSTRT 的含義與 tpcall() 中的一樣

    TPNOREPLY:調用 tpacall()的客戶端不想接收SEVER端的應答。如果設置了

    TPNOREPLY:服務端不會給該 客戶端發送應答。

    返回值: 失敗返回-1,成功返回一個HANDLER,可作為tpgetrply的參數,用于取應答

    4.3tpgetrply

    int tpgetrply(int *cd, char **data, long *len, long flags)

    描述:取出服務端對tpacall()的應答。

    參數: cd tpacall()返回的HANDLER

    char **data返回緩沖區的地址,服務端傳給客戶端的結果放在該緩沖區內

    long?? *len:返回緩沖區的長度

    flags: 可以是:TPNOBLOCK, TPNOTIME,TPSIGRSTRT,TPGETANY(不管 cd的值,從服務

    器的應答隊列中取第一個可用的消息 ),TPNOCHANGE

    返回值: 失敗返回-1,錯誤號保存在全局變量tperrno中。

    ?

    4.4tpcancel

    int tpcancel(int handle)

    描述: 如果當前的程序不處于事務模式中,取消對tpacall()的應答, 如果處于事務模式

    ,則不能取消對tpacall()的應答,該調用會失敗.

    參數: tpacall()返回的HANDLER

    返回值: 失敗返回-1,錯誤號保存在全局變量tperrno中。

    4.5tpgprio

    int tpgprio()

    描述:返回最近發送(tpcall(),tpacall())或接收(tpgetrply())的一個消息的優先級

    參數:無

    返回值: 1-100消息的優先級,值越高, 優先級越高

    ??????? 失敗返回-1, 錯誤號保存在全局變量tperrno中。

    ?

    struct {

    int hdl; /* handle*/

    int pr; /* priority*/

    } pa[SIZE];

    for (i=0; i<requests; i++) {

    /* Determine service and data for request */

    pa [i].hdl = tpacall(Svc, buf, len, flags);

    /* Save priority used to send request */

    pa[i].pr = tpgprio();

    }

    /* Use qsort(3) routine to sort handles in priority order */

    qsort((char*) pa, requests, sizeof(pa[0]), cmpfcn);

    for (i=0; i< requests; i++) {

    tpgetrply(&pa[i].hdl, &rbufp, &rlen, rflags);

    }

    ?

    4.6tpsprio

    int tpsprio (int prio, long flags)

    描述: 設置下一個要發送的消息的優先級

    參數: 0- prio為 相對值, 設置下一個要發送的消息的優先級為現在的優先級加上 prio

    ???? TPABSOLUTE: prio為絕對值, 設置下一個要發送的消息的優先級為 prio

    返回值: 失敗返回-1,錯誤號保存在全局變量tperrno中。

    5 與請求錯誤處理有關的 ATMI

    5.1tpstrerror

    char *tpstrerror(int tperrno)

    描述:返回 錯誤號為tperrno的錯誤描述

    參數: tperrno:在atmi.h中定義的全局變量,用于標識錯誤號,類似于C中的errno

    返回值: 失敗返回NULL,成功返回 錯誤號為tperrno的錯誤描述.

    5.2tperrordetail

    int tperrordetail(long flags)

    描述: 返回當前進程或線程最近調用ATMI的出錯的更詳細的描述

    參數:設為0

    返回值: 如果沒有錯誤返回0,有錯誤返回 錯誤描述號

    ?

    5.3tpstrerrordetail

    char * tpstrerrordetail(int err, long flags)

    描述: 返回錯誤描述號 err 詳細描述信息

    參數:

    err : tperrordetail()的返回值,

    flags: 設為0

    返回值: 失敗返回NULL,成功返回 詳細描述信息。

    posted on 2006-09-04 23:01 Vincent.Chen 閱讀(531) 評論(0)  編輯  收藏 所屬分類: BEA

    主站蜘蛛池模板: 亚洲成AV人片在线观看无| 亚洲午夜一区二区三区| 久草视频在线免费| 国产成人亚洲综合网站不卡| 在线看片无码永久免费aⅴ| 9久热精品免费观看视频| 亚洲大香伊人蕉在人依线| 成人在线免费观看| 丝瓜app免费下载网址进入ios| 亚洲国产超清无码专区| 亚洲一区二区三区在线视频 | 亚洲综合免费视频| WWW国产亚洲精品久久麻豆| 亚洲AV日韩精品久久久久| 老司机永久免费网站在线观看| 国产无遮挡无码视频免费软件 | 日本亚洲欧美色视频在线播放| 亚洲色无码一区二区三区| 成人五级毛片免费播放| 一个人免费视频在线观看www | 两个人看的www高清免费视频| 91在线亚洲综合在线| 亚洲国产精品无码久久一线| 成人免费无码精品国产电影| 120秒男女动态视频免费| 一级毛片人与动免费观看| 亚洲国产区男人本色在线观看| 国产亚洲精品观看91在线| 国产免费看插插插视频| 青青久在线视频免费观看 | 亚洲国产小视频精品久久久三级| 国产在线jyzzjyzz免费麻豆| 国产三级在线免费观看| 亚洲国产aⅴ成人精品无吗| 亚洲视屏在线观看| 亚洲av永久无码精品秋霞电影影院 | 四虎在线成人免费网站| 国产白丝无码免费视频| 本道天堂成在人线av无码免费| 亚洲av无码专区首页| 亚洲一区AV无码少妇电影|