/* * salamanderSupplier.c * * Fake testing supplier for the salamander distribution system. * * G. Robert Malan (rmalan@eecs.umich.edu) * 3/5/97 * * $Id: salamanderSupplier.c,v 1.10 1997/03/26 05:04:04 rmalan Exp $ */ #include #include #include #include "propertyList.h" #include "salamanderInterface.h" char *pname; int delay = 5; int tosend = 10; void * dataToSend; int sizeToSend = 512; char * hostname = "127.0.0.1"; int sskey = 1234567; char * queueName = "test"; void usage(void) { fprintf(stderr, "%s: [-h serverHost] [-n numMsgToSend] [-d secondsToDelay]\n", pname); exit(1); } main(int argc, char **argv) { int ret; int *iptr; int curmsg; plist_t plist; unsigned long data_length; char databuf[256]; char timebuf[256]; struct timeval tv; pname = argv[0]; for (argc--, argv++; argc > 0; argc--, argv++) { if (argv[0][0] != '-') usage(); switch (argv[0][1]) { case 'h': argc--, argv++; if (argc < 1) usage(); hostname = argv[0]; break; case 'n': argc--, argv++; if (argc < 1) usage(); tosend = atoi(argv[0]); break; case 'i': argc--, argv++; if (argc < 1) usage(); delay = atoi(argv[0]); break; case 'k': argc--, argv++; if (argc < 1) usage(); sskey = atoi(argv[0]); break; case 's': argc--, argv++; if (argc < 1) usage(); sizeToSend = atoi(argv[0]); break; case 'q': argc--, argv++; if (argc < 1) usage(); queueName = argv[0]; break; default: usage(); } } printf("%s: supplier connection to '%s' for %d messages %d bytes long %d seconds apart.\n", pname, hostname, sizeToSend, tosend, delay); /* Fill in send buffer. */ srand(sskey); dataToSend = (void *)malloc(sizeToSend); for (iptr = (int *)dataToSend; (u_int)iptr < (u_int)dataToSend + sizeToSend/4; iptr++) { *iptr = rand(); } plist = createPropertyList(); ret = connectToSalamanderServer(hostname, sskey); if (ret != SALAMANDER_OK) { fprintf(stderr, "Error connection to server (%d)\n", ret); exit(0); } /** * These properties are invarient for the testing. */ updateProperty(plist, COMMAND_PROPERTY, PUBLISH_COMMAND); updateProperty(plist, NAME_PROPERTY, queueName); /** * Send an update every n seconds. */ for (curmsg = 1; curmsg <= tosend; curmsg++) { gettimeofday(&tv, NULL); sprintf((char *)timebuf, "%ld.%06ld", tv.tv_sec, tv.tv_usec); updateProperty(plist, TIMESTAMP_PROPERTY, (char *)timebuf); sprintf((char *)databuf, "%d", curmsg); updateProperty(plist, "SUBNAME", (char *)databuf); #if 1 sprintf((char *)databuf, "This is the data message %d of %d!", curmsg, tosend); ret = salamanderSendServerData(plist, (void *)databuf, strlen(databuf) + 1); #else ret = salamanderSendServerData(plist, (void *)dataToSend, sizeToSend); #endif if (ret != SALAMANDER_OK) { fprintf(stderr, "send data failed.\0"); break; } if (delay) sleep(delay); } disconnectFromSalamanderServer(); printf("%s: done.\n", pname); }