📄 mbsputp1.c
字号:
/* ---------------------------------------------------------------------------------
Program name : mbsputp1.c
Description : Sample C program that puts a publish message
to Publish queue
(C) Copyright SAISON INFORMATION SYSTEMS CO.,LTD. 2004 All Rights Reserved.
--------------------------------------------------------------------------------- */
/*----------------------------------------------------------------------------------
Function :
"mbsputp1" is a sample C program to put a publish message to Publish
queue. This program gets a message from StdIn, and puts this to Publish
queue with "PUBLISH" as the UserDefineID.
This program has the following parameters. If the optional parameters
are omitted, the parameters in System-Environment file( mbcenv.conf or MBCENV )
will be used.
required :
optional :
(1) -s Server : The name of HULFT-Message Server
(2) -p Port : The port of HULFT-Message Server
(3) -t Topic : The name of the topic
--------------------------------------------------------------------------------- */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#if defined(OS400)
#include "APIH/MBAPI"
#define usage "Usage : CALL MBSPUTP1 PARM('-s' 'Server' '-p' 'Port' '-t' 'Topic')"
#else
#include "mbapi.h"
#define usage "Usage : mbsputp1 [-s Server] [-p Port] [-t Topic]"
#endif
int main( int argc, char **argv )
{
/* ---------------------------------------------------------------------------------
Declare structures needed
--------------------------------------------------------------------------------- */
MBHD *Hconn; /* connection handle */
MBQHD *Hque; /* queue handle */
MBCON Conn; /* MBCON structure */
MBQ Que; /* MBQ structure */
MBMSG Msg; /* MBMSG structure */
MBERR err; /* MBERR structure */
int rc; /* return code */
unsigned short port; /* server port */
char server[MBA_HOST_NAME_LEN+1]; /* server name */
char topic[MBA_TOPIC_LEN+1]; /* topic */
char sin_buf[256]; /* buffer for StdIn */
char user_define_id[] = "PUBLISH"; /* user definition ID */
/* ---------------------------------------------------------------------------------
Initialize
--------------------------------------------------------------------------------- */
memset( server, 0x00, sizeof(server) );
memset( topic, 0x00, sizeof(topic) );
port = 0;
/* ---------------------------------------------------------------------------------
Check the arguments
--------------------------------------------------------------------------------- */
if( argc > 7 ){
printf( "%s\n", usage );
exit( -1 );
}
argv++;
argc--;
while( argc-- ){
if( !strcmp( *argv, "-s" )){ /* server name */
if( argc <= 0 ){
printf( "%s\n", usage );
exit( -1 );
}
argv++;
argc--;
strncpy( server, *argv, MBA_HOST_NAME_LEN );
}
else if( !strcmp( *argv, "-p" )){ /* server port */
if( argc <= 0 ){
printf( "%s\n", usage );
exit( -1 );
}
argv++;
argc--;
port = atoi( *argv );
}
else if( !strcmp( *argv, "-t" )){ /* topic */
if( argc <= 0 ){
printf( "%s\n", usage );
exit( -1 );
}
argv++;
argc--;
strncpy( topic, *argv, MBA_TOPIC_LEN );
}
else{
printf( "%s\n", usage );
exit( -1 );
}
argv++;
}
/* ---------------------------------------------------------------------------------
Connect to HULFT-Message Server
--------------------------------------------------------------------------------- */
memset( &Conn, 0x00, sizeof( Conn ));
strcpy( Conn.Server, server ); /* server name */
Conn.Port = port; /* server port */
#if defined(OS400)
Conn.Ebcdiccode = MBA_ET_IBMSMLEX; /* ebcdic code type */
#endif
Hconn = MBCONN( &Conn, sizeof( Conn ), &err );
if( !Hconn ){ /* if API returns unsuccessfully */
printf( "MBCONN : err=%d dtl=%d sys=%d msg=%s\n",
err.ErrCode, err.DtlCode, err.SysCode, err.ErrMsg );
exit( -1 );
}
/* ---------------------------------------------------------------------------------
Open the queue
--------------------------------------------------------------------------------- */
memset( &Que, 0x00, sizeof( Que ));
Que.MsgMode = MBA_MM_PUBLISH; /* message mode */
Hque = MBOPEN( Hconn, &Que, sizeof( Que ), &err );
if( !Hque ){ /* if API returns unsuccessfully */
printf( "MBOPEN : err=%d dtl=%d sys=%d msg=%s\n",
err.ErrCode, err.DtlCode, err.SysCode, err.ErrMsg );
MBDISCON( Hconn, &err );
exit( -1 );
}
/* ---------------------------------------------------------------------------------
Put the message to the queue
--------------------------------------------------------------------------------- */
printf ( ">> Input data\n" );
fgets( sin_buf,sizeof(sin_buf),stdin );
memset( &Msg, 0x00, sizeof( Msg ));
strcpy( Msg.UserDefineID, user_define_id ); /* user definition ID */
Msg.DataType = MBA_DATA_TYPE_TEXT; /* data type */
strcpy( Msg.Topic, topic ); /* topic */
Msg.Buf = sin_buf; /* message buffer */
Msg.MsgSize = strlen( Msg.Buf ); /* message size */
#if defined(OS400)
Msg.ShiftCode = MBA_SFT_CUT; /* shift code */
Msg.SpaceMode = MBA_SP_FULL; /* space mode */
#endif
rc = MBPUT( Hconn, Hque, &Msg, sizeof( Msg ), &err );
if( rc ){ /* if API returns unsuccessfully */
printf( "MBPUT : err=%d dtl=%d sys=%d msg=%s\n",
err.ErrCode, err.DtlCode, err.SysCode, err.ErrMsg );
MBCLOSE( Hconn, Hque, &err );
MBDISCON( Hconn, &err );
exit( -1 );
}
/* ---------------------------------------------------------------------------------
Close the queue
--------------------------------------------------------------------------------- */
rc = MBCLOSE( Hconn, Hque, &err );
if( rc ){ /* if API returns unsuccessfully */
printf( "MBCLOSE : err=%d dtl=%d sys=%d msg=%s\n",
err.ErrCode, err.DtlCode, err.SysCode, err.ErrMsg );
MBDISCON( Hconn, &err );
exit( -1 );
}
/* ---------------------------------------------------------------------------------
Disconnect from HULFT-Message Server
--------------------------------------------------------------------------------- */
rc = MBDISCON( Hconn, &err );
if( rc ){ /* if API returns unsuccessfully */
printf( "MBDISCON : err=%d dtl=%d sys=%d msg=%s\n",
err.ErrCode, err.DtlCode, err.SysCode, err.ErrMsg );
exit( -1 );
}
printf( "Normal termination\n" );
return( 0 );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -