Пример #1
0
/*
    heartbeat -- pings the master 
*/
void *heartbeat(void *ptr) {
Worker *worker = (Worker*) ptr;
::std::string pong = "PONG";
::std::vector< ::std::string> vreq;
vreq.push_back("PING");
vreq.push_back(worker->receiverChannel);
::std::string req;
serialize(&vreq, &req);
int failures = 0;
int max_failures = 10;

while (worker->heartbeatRunning && failures < max_failures) {
    try {
        callSocket(&req, &pong, worker->endpoint, worker->timeout);
        ::std::cout << "ping did work" << ::std::endl;
    }
    catch (...) {
        ::std::cout << "ping did not work!" << ::std::endl;
        failures += 1;
    }
    // we need to sleep here
    sleep(worker->heartbeatDelay);
}
// if we quit because of failures, we need to toggle the worker flag
if (failures >= max_failures) {
    worker->heartbeatFailed = true;
}
::std::cout << "bye!" << ::std::endl;
return NULL;
}
Пример #2
0
void Worker::reg() {
    // register to the master
    ::std::cout << "registering" << ::std::endl;
    ::std::vector< ::std::string> vreq;
    vreq.push_back("PING");
    vreq.push_back(this->receiverChannel);
    ::std::string req;
    serialize(&vreq, &req);
    ::std::string resp = "PONG";
    callSocket(&req, &resp, this->endpoint, this->timeout);
}
Пример #3
0
int main(int argc, char* argv[]) {
	glutInit(&argc, argv);
#ifdef _WIN32
	HNWindowsObjectFactory::setAsDefaultFactory();
	HNWindowsNetworkObjectFactory::setAsDefaultFactory();
#endif
	//HNWorld::getInstance()->setBackcolor(HNPointXYZW(0,0,0,0));
	//HNAdithScene *scene = new HNAdithScene();
	//HNWorld::getInstance()->addScene(scene);
	//HNWorld::getInstance()->start();
	cout << "Running HUNA Instance :" << HNINSTANCE_ID<<endl;
	int count = 1;
	while (1)
	{
		cout << "Sending Message to Server ..." << endl;
		//string msg = "This is message no " + to_string(count) + " from HUNA Instance " + HNINSTANCE_ID;
		string msg = "File Stored in  <a href=\\'/Content/Temp/Instance/SkeletonData1.js\\' target=\\'_blank\\'>ftp:\\\\192.168.0.3\\\\FileStore\\\\Instance1\\\\SkeletonData" + to_string(count) + ".data</a>";
		cout << msg<<endl;
		callSocket(HNINSTANCE_ID,"FILE_LOCATION",msg);
		count++;
		system("PAUSE");
	}
	_getch();
}
int main(int argc, char *argv[]){
	int 	listenfd,
			i=0, 
			iPort,
			fd,
			err,
			status;
	char 	client[MAX_CANON],
			command[MAX_CANON],
			ip[IP_MAX],
			*saveptr,
			*sPort,
			*sIp,
			a,
			*c;
	struct 	dirent *direntp;
	DIR 	*dirp;
	struct	sigaction sigIntHandler;
	struct ifaddrs *myaddrs, *ifa;
	request_t request, request2;
	flag_t 	flag;
	sigset_t set;
	sigemptyset(&set);
	sigaddset(&set, SIGINT);

	sigIntHandler.sa_handler = signalHandler;

	if(argc != 2)
		usage("2 arguman girmelisiniz\t./client <server IP>:<server port number>");

	else{
		if (sigemptyset(&sigIntHandler.sa_mask) == -1 || sigaction(SIGINT, &sigIntHandler, NULL) || sigaction(SIGUSR1, &sigIntHandler, NULL))
			err_sys("signal handler");
		sigIntHandler.sa_flags = 0;
		saveptr=command;
		sIp=strtok_r(argv[1], ":", &saveptr);
		sPort=strtok_r(NULL, ":", &saveptr);
		printf("%s\n", argv[1]);
		if(sPort!=NULL)
			iPort=atoi(sPort);
		else
			usage("./client <server IP>:<server port number>");

		socketFD = callSocket(sIp, iPort);
		if(socketFD==-1)
			err_sys("connection error");

		getcwd(request2.path, PATH_MAX);

		if(write(socketFD, &request2, sizeof(request2))<0)
			err_sys("write");

		if(read(socketFD, &id, sizeof(int))<0)
			err_sys("read");

		pthread_mutex_init(&mutex, NULL);
		if (err = pthread_create(&tid, NULL, (void *)readFromServer, &c)<0)
			perror("pthread_create");

		status = getifaddrs(&myaddrs);
		if (status != 0)
			err_sys("getifaddrs failed!");

		freeifaddrs(myaddrs);

		system("clear");
		printf("Port Number: %d ",iPort);
		for (ifa = myaddrs; ifa != NULL; ifa = ifa->ifa_next)
			if ((ifa->ifa_flags & IFF_UP) != 0 && NULL != ifa->ifa_addr)
				printIPAddress(ifa);
	
		fprintf(stderr, "\nPlease enter a command.\nEnter 'help' for display the available commands and their usage.\n");

		while(1){
			printf("\nClient ID: %d\n  >\t", id);

		 	fgets(command, 50, stdin);
		 	printf("\n");
		 	command[strlen(command)-1]='\0';

		 	if(strcmp(command, "help") == 0)
		 		menu();
		 	else if(strcmp(command,"listLocal") == 0){
		 		char cwd[255];
		 		getcwd(cwd, 255);
				if((dirp = opendir(cwd)) == NULL)
					err_sys("opendir");

				printf("List of local files in %s\n", cwd);
				while((direntp = readdir(dirp)) != NULL) {
					if(strcmp(direntp->d_name,".") != 0 && strcmp(direntp->d_name,"..") != 0){
						fprintf(stderr, "%s\n", direntp->d_name);
					}
				}
		 	}

		 	else if(strcmp(command,"lsClients") == 0){
				sprintf(request.command, "%s", "lsClients");
				if(write(socketFD, &request, sizeof(request))<0)
					perror("write");
		 	}

		 	else if(strncmp(command,"sendFile", 8) == 0){
		 		bool status=true;
				char *fileName, *id1, *saveptr;
				saveptr=command;
				strtok_r(command, " ", &saveptr);

				fileName = strtok_r(NULL, " " , &saveptr);
				id1 = strtok_r(NULL, " ", &saveptr);

					if(fileName==NULL){
						fprintf(stderr, "Please enter a current filename.\n");
						status=false;
					}
					else{
						sprintf(request.file.name, "%s", fileName);
						if((fd = open(fileName, O_RDONLY))<0){
							fprintf(stderr, "%s isn't a current file name. Try again!\n", fileName);
							request.status=-3;
							status=false;
						}
					}
					if(id1==NULL) {	/*dosyayi sadece server'a yolla. */
						request.status=-1;
						request.clientID=id;
						printf("nULL\n");
						if((fd = open(fileName, O_RDONLY))<0){
							fprintf(stderr, "%s isn't a current file name. Try again!\n", fileName);
							status=false;
							printf("Status: %d\n", status);
						}
					}
					else{
						request.status=1;
						request.clientID=atoi(id1);
					}

					struct stat st;
					stat(fileName, &st);
					request.file.size = st.st_size;
							
					strcpy(request.command,"sendFile");
					if(status){
						flagWrite=1;
						pthread_sigmask(SIG_BLOCK, &set, NULL);
						if(write(socketFD, &request, sizeof(request))<0)
							err_sys("write");
						else{
							int j=0;
							while(j<request.file.size){
								if(read(fd, &a, sizeof(char))<0)
									perror("read1");
								write(socketFD, &a, sizeof(char));
								++j;
							}
							close(fd);
						flagWrite=0;
						pthread_sigmask(SIG_UNBLOCK, &set, NULL);
					}
				}
			}
			else if(strcmp(command,"listServer") == 0){
				sprintf(request.command, "%s", "listServer");
				if(write(socketFD, &request, sizeof(request))<0)
					perror("write");
			}
			
			else
				fprintf(stderr, "Please enter a current command.\n");
		}
	}
}