Changeset 4887 for branches/erijo-dev
- Timestamp:
- 04/12/07 04:20:20 (20 months ago)
- Location:
- branches/erijo-dev/licq/src/event
- Files:
-
- 2 modified
Legend:
- Unmodified
- Added
- Removed
-
branches/erijo-dev/licq/src/event/fdset.cpp
r4883 r4887 26 26 return; 27 27 28 bool updateFdSet = false; 29 28 30 if (!RemoveFds.empty()) 29 31 { 30 for (TFds::const_iterator it = RemoveFds.begin(); 31 it != RemoveFds.end(); ++it) 32 for (TFds::const_iterator it = RemoveFds.begin(); it != RemoveFds.end(); ++it) 32 33 { 33 34 for (TFds::iterator fd = Fds.begin(); fd != Fds.end(); ++fd) … … 42 43 } 43 44 45 updateFdSet = true; 44 46 RemoveFds.clear(); 45 47 } … … 47 49 if (!AddFds.empty()) 48 50 { 49 for (TFds::const_iterator it = AddFds.begin(); 50 it != AddFds.end(); ++it) 51 for (TFds::const_iterator it = AddFds.begin(); it != AddFds.end(); ++it) 51 52 { 52 53 Fds.push_back(*it); 53 54 } 54 55 56 updateFdSet = true; 55 57 AddFds.clear(); 58 } 59 60 // Update cached fd_set if needed 61 if (updateFdSet) 62 { 63 MaxFd = 0; 64 FD_ZERO(&FdSet); 65 66 for (TFds::const_iterator it = Fds.begin(); it != Fds.end(); ++it) 67 { 68 FD_SET((*it)->Fd, &FdSet); 69 MaxFd = std::max(MaxFd, (*it)->Fd); 70 } 56 71 } 57 72 } 58 73 59 74 Licq::TFdSet::TFdSet() 60 : InFireActive(false) 75 : InFireActive(false), MaxFd(0) 61 76 { 62 // Empty77 FD_ZERO(&FdSet); 63 78 } 64 79 … … 66 81 { 67 82 std::for_each(Fds.begin(), Fds.end(), ObjectDeleter()); 68 }69 70 bool Licq::TFdSet::empty() const71 {72 return Fds.empty();73 }74 75 size_t Licq::TFdSet::size() const76 {77 return Fds.size();78 83 } 79 84 … … 114 119 { 115 120 assert(set != NULL); 116 117 int maxFd = 0; 118 FD_ZERO(set); 119 120 for (TFds::const_iterator it = Fds.begin(); it != Fds.end(); ++it) 121 { 122 FD_SET((*it)->Fd, set); 123 maxFd = std::max(maxFd, (*it)->Fd); 124 } 125 126 return maxFd; 121 ::memcpy(set, &FdSet, sizeof(fd_set)); 122 return MaxFd; 127 123 } 128 124 -
branches/erijo-dev/licq/src/event/fdset.h
r4883 r4887 47 47 void addRemoveFds(); 48 48 49 fd_set FdSet; 50 int MaxFd; 51 49 52 public: 50 53 TFdSet(); … … 63 66 } // namespace Licq 64 67 68 inline bool Licq::TFdSet::empty() const 69 { 70 return Fds.empty(); 71 } 72 73 inline size_t Licq::TFdSet::size() const 74 { 75 return Fds.size(); 76 } 77 65 78 #endif
