Changeset 6835 for source/ariba/overlay


Ignore:
Timestamp:
Nov 5, 2009, 10:18:18 AM (15 years ago)
Author:
mies
Message:

added replace flag

Location:
source/ariba/overlay
Files:
4 edited

Legend:

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

    r6832 r6835  
    21082108        switch (msg->getType()) {
    21092109        case OverlayMsg::typeDHTPut: {
     2110                if (dhtMsg->doReplace()) dht->remove(dhtMsg->getKey());
    21102111                BOOST_FOREACH( Data value, dhtMsg->getValues() )
    21112112                                        dht->put(dhtMsg->getKey(), value, dhtMsg->getTTL() );
     
    21452146
    21462147/// put a value to the DHT with a ttl given in seconds
    2147 void BaseOverlay::dhtPut( const Data& key, const Data& value, int ttl ) {
     2148void BaseOverlay::dhtPut( const Data& key, const Data& value, int ttl, bool replace ) {
    21482149
    21492150        logging_info("DHT: putting key=" <<  key
    21502151                        << " value=" << value
    21512152                        << " ttl=" << ttl
     2153                        << " replace=" << replace
    21522154        );
    21532155
     2156
    21542157        // put into local data store (for refreshes)
    2155         localDHT->put(key,value,ttl);
     2158        if (replace) localDHT->remove(key);
     2159        localDHT->put(key, value, ttl);
    21562160
    21572161        // calculate hash
    21582162        NodeID dest = NodeID::sha1(key.getBuffer(), key.getLength() / 8);
    21592163        DHTMessage dhtmsg(key,value);
     2164        dhtmsg.setReplace(replace);
    21602165        dhtmsg.setTTL(ttl);
    21612166
  • source/ariba/overlay/BaseOverlay.h

    r6822 r6835  
    279279
    280280        /// put a value to the DHT with a ttl given in seconds
    281         void dhtPut( const Data& key, const Data& value, int ttl = 0);
     281        void dhtPut( const Data& key, const Data& value, int ttl = 0, bool replace = false);
    282282
    283283        /// removes a key value pair from the DHT
  • source/ariba/overlay/messages/DHTMessage.cpp

    r6796 r6835  
    1111        this->key.setLength(0);
    1212        this->ttl =0 ;
     13        this->replace = false;
    1314}
    1415
     
    1819        this->key = key.clone();
    1920        this->ttl =0 ;
     21        this->replace = false;
    2022}
    2123
     
    2628        this->values.push_back(  value.clone() );
    2729        this->ttl =0 ;
     30        this->replace = false;
    2831}
    2932
     
    3235        BOOST_FOREACH(const Data value, values )
    3336                        this->values.push_back( value.clone() );
     37        this->replace = false;
    3438}
    3539
  • source/ariba/overlay/messages/DHTMessage.h

    r6796 r6835  
    4444        }
    4545
     46        void setReplace( bool replace ) {
     47                this->replace = replace;
     48        }
     49
     50        bool doReplace() const {
     51                return replace;
     52        }
     53
    4654        /// return alles values for the key
    4755        const vector<Data>& getValues() const {
     
    5260        NodeID hash;
    5361        uint16_t ttl;
     62        bool replace;
    5463        Data key;
    5564        vector<Data> values;
     
    6069sznBeginDefault( ariba::overlay::DHTMessage, X ) {
    6170
     71        // serialize flags
     72        X && replace && cI(0,7);
     73
     74        // serialize tll
    6275        X && ttl;
    6376
Note: See TracChangeset for help on using the changeset viewer.