- Timestamp:
- Jul 13, 2009, 9:42:32 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
source/ariba/utility/bootstrap/modules/periodicbroadcast/PeriodicBroadcast.cpp
r4853 r4866 59 59 use_logging_cpp(PeriodicBroadcast); 60 60 const long PeriodicBroadcast::timerinterval = 1000; 61 const long PeriodicBroadcast::servicetimeout = 3000; 61 62 const unsigned int PeriodicBroadcast::serverport_v4 = 5634; 62 63 const unsigned int PeriodicBroadcast::serverport_v6 = 5636; … … 130 131 void PeriodicBroadcast::updateRemoteServices(){ 131 132 133 // cleanup the services that timed out 134 // so they are seen of as new after timeout 135 { 136 boost::mutex::scoped_lock lock( remoteServicesMutex ); 137 bool deleted; 138 139 do { 140 deleted = false; 141 142 ServiceList::iterator i = remoteServices.begin(); 143 ServiceList::iterator iend = remoteServices.end(); 144 145 for( ; i != iend; i++ ){ 146 147 if( time(NULL) > (i->second.lastseen + servicetimeout) ){ 148 remoteServices.erase( i ); 149 deleted = true; 150 break; 151 } 152 } 153 154 }while(deleted); 155 } 156 157 // check if we received new services: 158 // check remoteServices against newRemoteServices 159 { 160 boost::mutex::scoped_lock lock( newRemoteServicesMutex ); 161 typedef std::pair<string,Service> mapitem; 162 163 BOOST_FOREACH( mapitem item, newRemoteServices ){ 164 165 string name = item.first; 166 Service service = item.second; 167 168 ServiceList::iterator i = remoteServices.find( name ); 169 if( i != remoteServices.end() ) { 170 // update the item lastseen time 171 i->second.lastseen = service.lastseen; 172 continue; 173 } 174 175 { 176 // insert the new item as new, lastseen has been set in the 177 // receive function, as this timer only runs in intervals 178 boost::mutex::scoped_lock lock2( remoteServicesMutex ); 179 remoteServices.insert( std::make_pair(name, service) ); 180 } 181 182 callback->onBootstrapServiceFound(name, service.info1, service.info2, service.info3); 183 } 184 185 // we have checked and transfered all new items 186 newRemoteServices.clear(); 187 } 132 188 } 133 189
Note:
See TracChangeset
for help on using the changeset viewer.