随笔 - 42  文章 - 5  评论 - 47 
  2010年1月9日

CARRAY-----         BinaryByteStream Fixed length

                           No Encode/Decode

STRING ------       CharBytesStream Variable   length

                           Encode/Decode

VIEW ---------      C Structure  Oriented Fixed length               

                           Encode/Decode

FML ----------      Attribtutes/Value Oriented Variable length

                           Encode/Decode

越往上边,越简单、效率高、类型少、死板

越往下边,越复杂、效率低、类型多、灵活

posted @ 2010-01-09 18:41 gjung 阅读(78) 评论(0) 编辑

#include

#include "atmi.h"         /* TUXEDO 头文件*/

#if defined(__STDC__) || defined(__cplusplus)

main(int argc, char *argv[])

#else

main(argc, argv)

int argc;

char *argv[];

#endif

{

       char *sendbuf, *rcvbuf;

       long sendlen, rcvlen;

       int ret;

 

       if(argc != 2) {

              (void) fprintf(stderr, "Usage: simpcl string ");

              exit(1);

       }

       /* 作为tuxedo客户端连入tuxedo System */

       if (tpinit((TPINIT *) NULL) == -1) {

              (void) fprintf(stderr, "Tpinit failed ");

              exit(1);

       }

       sendlen = strlen(argv[1]);

       /* 使用tpalloc申请string类型buffer作为请求和应答buffer */

       if((sendbuf = (char *) tpalloc("STRING", NULL, sendlen+1)) == NULL) {

              (void) fprintf(stderr,"Error allocating send buffer ");

              tpterm();

              exit(1);

       }

       if((rcvbuf = (char *) tpalloc("STRING", NULL, sendlen+1)) == NULL) {

              (void) fprintf(stderr,"Error allocating receive buffer ");

              tpfree(sendbuf);

              tpterm();

              exit(1);

       }

       (void) strcpy(sendbuf, argv[1]);

       /* 同步调用TOUPPER服务 */

       ret = tpcall("TOUPPER", (char *)sendbuf, 0, (char **)&rcvbuf, &rcvlen, (long)0);

       if(ret == -1) {

              (void) fprintf(stderr, "Can't send request to service TOUPPER ");

              (void) fprintf(stderr, "Tperrno = %d ", tperrno);

              tpfree(sendbuf);

              tpfree(rcvbuf);

              tpterm();

              exit(1);

       }

       (void) fprintf(stdout, "Returned string is: %s ", rcvbuf);

       /* 使用tpfree释放申请的请求和应答buffer空间 */

       tpfree(sendbuf);

       tpfree(rcvbuf);

       /* 使用tpterm离开tuxedo System */

       tpterm();

       return(0);

}

posted @ 2010-01-09 18:17 gjung 阅读(197) 评论(0) 编辑

#include

#include

#include        /* TUXEDO头文件 */

#include   /* TUXEDO头文件 */

 

#if defined(__STDC__) || defined(__cplusplus)

tpsvrinit(int argc, char *argv[])

#else

tpsvrinit(argc, argv)

int argc;

char **argv;

#endif

{

       /* 如果没有argc、argv一些编译系统会有警告信息. */

       argc = argc;

       argv = argv;

 

       /* userlog 把tuxedo消息写入日志文件中 */

       userlog("Welcome to the simple server");

       return(0);

}

 

#ifdef __cplusplus

extern "C"

#endif

void

#if defined(__STDC__) || defined(__cplusplus)

TOUPPER(TPSVCINFO *rqst)  /*tuxedo服务名字TOUPPER*/

#else

TOUPPER(rqst)

TPSVCINFO *rqst;

#endif

{

       int i;

       for(i = 0; i < rqst->len-1; i++)

              rqst->data[i] = toupper(rqst->data[i]);

       /* 设置返回客户端buffer */

       tpreturn(TPSUCCESS, 0, rqst->data, 0L, 0);

}

 

posted @ 2010-01-09 18:16 gjung 阅读(47) 评论(0) 编辑