4.4.4.4 simpview.cサーバー・コード

次のリストでは、入力バッファーと出力バッファーはVIEWです。このコードは、VIEWバッファ・タイプの入力データを受け入れ、同じVIEWバッファ・タイプのデータを出力します。

simpview.cのサンプル・コードのリスト

/*
* SIMPVIEW.c
*
* Copyright (c) 1997 Oracle Systems, Inc. All rights reserved
*
* Contains the SIMPVIEW Oracle Tuxedo server.
*
*/
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <sys/stat.h>
#include <malloc.h>
#include <math.h>
#include <string.h>
#include <fml.h>
#include <fml32.h>
#include <Usysflds.h>
#include <atmi.h>
#include <userlog.h>
#include "simpview.h"
/*
 * Contents of simpview.h.
 * 
 *struct SimpView {
 *
 *      char     inString[32];
 *      long     inInt;
 *      float    inFloat;
 *      char     outString[32];
 *      long     outInt;
 *      float    outFloat;
 *};
 */
/*
 * service reads in a input view buffer and outputs a view buffer.
 */
void
SIMPVIEW( TPSVCINFO *rqst )
{
        /*
         * get the structure (VIEWSVC) from the TPSVCINFO structure
         */
         struct SimpView*svcinfo = (struct SimpView *) rqst->data;
        /*
         * print the input params to the UserLog. Note there is    
         * no error checking here. Normally a SERVER would perform
         * some validation of input and return TPFAIL if the input  
         * is not correct.
         */
        (void)userlog("SIMPVIEW: InString=%s,InInt=%d,InFloat=%f",
                svcinfo->inString, svcinfo->inInt, svcinfo->inFloat);
        /*
         * Populate the output fields and send them back to the caller
         */
        strcpy (svcinfo->outString, "Return from SIMPVIEW");
        svcinfo->outInt = 100;
        svcinfo->outFloat = (float) 100.00;
        /*    
         * If there was an error, return TPFAIL
         * tpreturn(TPFAIL, ErrorCode, (char *)svcinfo, sizeof (*svcinfo), 0);
         */
         tpreturn(TPSUCCESS, 0, (char *)svcinfo, sizeof (*svcinfo), 0);
}