📄 coop.cc
字号:
/* * File: coop.cc * Author: Suman Banerjee <suman@cs.umd.edu> * Date: 15th February, 2002 * Terms: GPL * * NICE Application Layer Multicast */#include "o_timeout.h"#include "coop-agent.h"#include "talker_utils.h"#include "timer.h"#include <stdlib.h>#include <unistd.h>#include <pthread.h>int NUM_PACKETS = 3000;float PACKET_GAP = 1.0;int START_DELAY = 20;int pkt_counter=1;pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER;void SIGINTHandler(int SignalType) { printf("Disconnecting from talker...\n"); exit(disconnect_talker());}//sunnyvoid* thread_start(void* arg) { coopAgent* agent=(coopAgent*)arg; agent->start(); return NULL;}void* wait(struct timeval tv){ printf("wait........\n"); select(0, NULL, NULL, NULL, &tv); printf("10........\n"); return NULL;}void* send_word(void* arg){ coopAgent* agent=(coopAgent*)arg; char *buffer="sunny"; int buflen=5; struct timeval tv; tv.tv_sec=10; tv.tv_usec=0; printf("start sending\n"); while(true) { pthread_mutex_lock(&mutex); {printf("###############send################\n"); agent->specific_send_data_pkt((char*)buffer, buflen+1); } pthread_mutex_unlock(&mutex); wait(tv); } return NULL;}void packet_handler(char* buf, int len) { //printf("packet with len %d received \n", len); printf("%dth packet_handler: %s\n", pkt_counter++, buf);}//sunnyint main(int argc, char ** argv) { struct sigaction handler;//sunny int sender;//sunny #ifdef LOG_CLUSTER_INFO_DETAILED if (argc != 7 && argc != 9) { printf("usage: %s <agent id> <port num> <bse hostname> <talker hostname> <talker port> <sender> [<drawer hostname> <drawer port>]\n", argv[0]); exit(-1); }/* if (argc != 6 && argc != 8) { printf("usage: %s <agent id> <port num> <bse hostname> <talker hostname> <talker port> [<drawer hostname> <drawer port>]\n", argv[0]); exit(-1); }*/#else if(argc != 7) { printf("usage: %s <agent id> <port num> <bse hostname> <talker hostname> <talker port> <sender>\n", argv[0]); exit(-1); }/* if(argc != 6) { printf("usage: %s <agent id> <port num> <bse hostname> <talker hostname> <talker port>\n", argv[0]); exit(-1); }*/#endif handler.sa_handler = SIGINTHandler; if(sigfillset(&handler.sa_mask) < 0) { printf("Couldn't fill signal set\n"); return -1; } handler.sa_flags = 0; if(sigaction(SIGINT, &handler, 0) < 0) { printf("Couldn't set signal action\n"); return -1; } coopAgent mycoop;#ifdef LOG_CLUSTER_INFO_DETAILED if(argc == 9) mycoop.init(atoi(argv[1]),0,atoi(argv[2]), argv[3], argv[7], atoi(argv[8])); else mycoop.init(atoi(argv[1]),0,atoi(argv[2]), argv[3]);/* if(argc == 8) mycoop.init(atoi(argv[1]),0,atoi(argv[2]), argv[3], argv[7], atoi(argv[8])); else mycoop.init(atoi(argv[1]),0,atoi(argv[2]), argv[3]);*/#else mycoop.init(atoi(argv[1]),0,atoi(argv[2]),argv[3]);#endif//sunny sender=atoi(argv[6]); if (sender != 0) mycoop.add_listening_fd(mycoop.udp_sock, NULL); else mycoop.add_listening_fd(mycoop.udp_sock, packet_handler); if (setup_talker(argv[4], atoi(argv[5])) < 0 ) exit(-1);//sunny initTimeout();//sunny pthread_t thread; pthread_t send_thread; pthread_create(&thread, NULL, thread_start, &mycoop); printf("my coop started\n"); if (sender!=0) pthread_create(&send_thread, NULL, send_word, &mycoop); pthread_join(thread, NULL); if (sender!=0) pthread_join(send_thread, NULL);// mycoop.start();//sunny return 0; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -