Changeset 6797 for source/ariba


Ignore:
Timestamp:
Nov 2, 2009, 11:06:46 AM (14 years ago)
Author:
mies
Message:

added key-value republishing.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • source/ariba/overlay/BaseOverlay.cpp

    r6796 r6797  
    125125                return vect;
    126126        }
     127
     128        void erase_expired_entries() {
     129                for (vector<ValueEntry>::iterator i = values.begin();
     130                                i != values.end(); i++ )
     131                        if (i->is_ttl_elapsed()) i = values.erase(i);
     132        }
    127133};
    128134
     
    132138        typedef vector<ValueEntry> Values;
    133139        Entries entries;
     140        static const bool verbose = true;
    134141
    135142        static bool equals( const Data& lhs, const Data& rhs ) {
     
    154161                                        if ( equals(entry.values[j].get_value(), value) ) {
    155162                                                entry.values[j].refresh();
    156                                                 std::cout << "DHT: Republished value. Refreshing TTL."
     163                                                if (verbose)
     164                                                        std::cout << "DHT: Republished value. Refreshing value timestamp."
    157165                                                        << std::endl;
    158166                                                return;
     
    161169
    162170                                // new value-> add to entry
    163                                 std::cout << "DHT: Added value to "
     171                                if (verbose)
     172                                        std::cout << "DHT: Added value to "
    164173                                        << " key=" << key << " with value=" << value << std::endl;
    165174                                entry.values.push_back( ValueEntry( value ) );
     
    170179
    171180                // key is unknown-> add key value pair
    172                 std::cout << "DHT: New key value pair "
     181                if (verbose)
     182                        std::cout << "DHT: New key value pair "
    173183                        << " key=" << key << " with value=" << value << std::endl;
    174184
     
    19071917/// stabilize DHT state
    19081918void BaseOverlay::stabilizeDHT() {
    1909 
     1919        // remove old values from DHT
     1920        BOOST_FOREACH( DHTEntry& entry, dht->entries ) {
     1921                // erase old entries
     1922                entry.erase_expired_entries();
     1923        }
     1924
     1925        // re-publish values
     1926        BOOST_FOREACH( DHTEntry& entry, localDHT->entries ) {
     1927                // erase old entries
     1928                entry.erase_expired_entries();
     1929
     1930                // re-publish values
     1931                BOOST_FOREACH( ValueEntry& value, entry.values )
     1932                        dhtPut(entry.key, value.get_value(), 0 );
     1933        }
    19101934}
    19111935
Note: See TracChangeset for help on using the changeset viewer.