#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include"tibrv/tibrvcpp.h"
#define MIN_PARAMS (3)
#define FIELD_NAME "DATA"
char* serviceStr =NULL;
char* networkStr=NULL;
char* daemonStr=NULL;
void usage(){
fprintf(stderr,"tibrvsend [-servce service] [-network network] \n");
fprintf(stderr," [-daemon daemon] <subject> <message>\n");
exit(1);
}
int getTransportParams(int argc, char* argv[]){
int i=1;
while(i+2<=argc,&& *argv[i]=='-'){
if(strcmp(argv[i],"-service")==0)
{
serviceStr=argv[i+1];
i+=2;
}
else if(strcmp(argv[i],"-network")==0){
networkStr=agv[i+1];
i+=2;
}
else if(strcmp(argv[i],"-daemon")==0){
daemonStr=argv[i+1];
i+=2;
}
else usage();
}
return i;
}
int main(int argc,char *argv[]){
TibrvStatus status;
if(argc<MIN_PARAMS) usage();
int i=getTransportParams(argc,argv);
if(i>=argc-1) usage();
status=Tibrv::open();
if(status!=TIBRV_OK)
{
fprintf(stderr,"Error: cold not open TIB/RV, status=%d, text=%s\n",(int)status,status.Text());
exit(-1);
}
TibrvNetTransport transport;
status=transport.create(serviceStr,networkStr,daemonStr);
if(status!=TIBRV_OK)
{
fprintf(stderr,"Error: could not create transport, status=%d, text=%s\n",(int)status,status.getText());
Tibrv::close();
exit(-1);
}
transport.setDescription(argv[0]);
TibrvMsg msg;
const char* subject=argv[i];
status=msg.setSendSubject(subject);
if(status!=TIBRV_OK)
{
fprintf(stderr,"Error: could not set subject %s into message, status=%d, text=%s\n",agv[i],(int)status.getText());
Tibrv::close();
exit(-1);
}
i++;
while(i<argc){
printf("Publishing: subject=%s \ "%s" \n",subject, argv[i]);
status=msg.updateString(FIELD_NAME,argv[i]);
if(status==TIBRV_OK) status=transport.send(msg);
if(status!=TIBRV_OK){
fprintf(stderr,"Error sending message, status=%d, text=%s\n",(int)status,status.getText());
break;
}
i++;
}
Tibrv::close();
exit(0);
return 0;
}
}
}