Changeset 389 for vtcross/trunk/src/shell/CognitiveRadioShell.cpp
- Timestamp:
- 07/28/09 23:23:14 (15 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
vtcross/trunk/src/shell/CognitiveRadioShell.cpp
r316 r389 642 642 643 643 644 void 644 int 645 645 CognitiveRadioShell::HandleMessage(int32_t socketFD) 646 646 { 647 647 char buffer[256]; 648 //printf("here\n"); 649 ReadMessage(socketFD, buffer); 648 int ret = 0; 649 650 ret = ReadMessage(socketFD, buffer); 651 if(ret == -1) { 652 return ret; 653 } 650 654 651 655 // TODO trying to read this code lock makes my eyes bleed … … 685 689 //GetOptimalParametersService(socketFD); 686 690 } 691 692 return ret; 687 693 } 688 694 … … 699 705 int32_t desc_ready = 1; 700 706 int32_t timeout = 10; 707 int32_t ret = 0;; 701 708 fd_set sockSet; 709 710 702 711 703 712 int32_t *servSock = new int32_t[3]; … … 726 735 ERROR(1,"Error initializing command port\n"); 727 736 737 FD_ZERO(&sockSet); 738 728 739 while (running) { 729 740 /* Zero socket descriptor vector and set for server sockets */ 730 741 /* This must be reset every time select() is called */ 731 //FD_ZERO(&sockSet);732 742 FD_SET(servSock[primary], &sockSet); 733 743 FD_SET(servSock[policy], &sockSet); … … 740 750 741 751 /* Suspend program until descriptor is ready or timeout */ 742 //printf("Waiting for signal...\n"); 743 rc = select(maxDescriptor + 1, &sockSet, NULL, NULL, NULL); 752 rc = select(maxDescriptor + 1, &sockSet, NULL, NULL, &selTimeout); 744 753 if(rc == 0) 745 754 LOG("No echo requests for %i secs...Server still alive\n", timeout); … … 754 763 do { 755 764 new_sd = AcceptTCPConnection(port); 756 if(new_sd < 0) 765 if(new_sd < 0) { 757 766 break; 767 } 758 768 759 769 if(port == servSock[primary]) … … 764 774 policySocketFD = new_sd; 765 775 766 HandleMessage(new_sd); 767 FD_SET(new_sd,&sockSet); 776 ret = HandleMessage(new_sd); 777 778 if(ret == -1) { 779 FD_CLR(new_sd,&sockSet); 780 close(new_sd); 781 } 782 783 FD_SET(new_sd,&sockSet); 768 784 if(new_sd > maxDescriptor) 769 785 maxDescriptor = new_sd; 770 //LOG("New incoming connection - %i\n\n",new_sd);771 786 } while(new_sd != -1); 772 787 } 773 788 else { 774 //LOG("Request on already open descriptor.\n\n"); 775 HandleMessage(port); 789 ret = HandleMessage(port); 790 if(ret == -1) { 791 FD_CLR(port,&sockSet); 792 close(port); 793 } 776 794 } 777 795 } … … 780 798 } 781 799 782 800 LOG("Closing it all.\n\n"); 783 801 /* Close sockets */ 784 802 close(servSock[primary]);