Ignore:
Timestamp:
Mar 11, 2010, 9:28:24 AM (14 years ago)
Author:
Christoph Mayer
Message:

-branch merge back

File:
1 edited

Legend:

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

    r7532 r7744  
    135135                for (vector<ValueEntry>::iterator i = values.begin();
    136136                                i != values.end(); i++ )
    137                         if (i->is_ttl_elapsed()) i = values.erase(i);
     137                        if (i->is_ttl_elapsed()) i = values.erase(i)-1;
    138138        }
    139139};
     
    214214                        // found? yes-> delete entry
    215215                        if ( equals(entry.key, key) ) {
    216                                 i = entries.erase(i);
     216                                i = entries.erase(i)-1;
    217217                                return true;
    218218                        }
     
    233233                                        // value found? yes-> delete
    234234                                        if (equals(j->get_value(), value)) {
    235                                                 j = entry.values.erase(j);
     235                                                j = entry.values.erase(j)-1;
    236236                                                return true;
    237237                                        }
     
    252252                                // value found? yes-> delete
    253253                                if (j->is_ttl_elapsed())
    254                                         j = entry.values.erase(j);
     254                                        j = entry.values.erase(j)-1;
    255255                        }
    256256
    257                         if (entry.values.size()==0) i = entries.erase(i);
     257                        if (entry.values.size()==0) i = entries.erase(i)-1;
    258258                }
    259259        }
     
    19111911                        "in the overlay from service " + service.toString() );
    19121912
     1913        if(message == NULL) return;
     1914        message->setReleasePayload(false);
     1915
    19131916        OverlayInterface::NodeList nodes = overlayInterface->getKnownNodes(true);
    1914         OverlayInterface::NodeList::iterator i = nodes.begin();
    1915         for(; i != nodes.end(); i++ ) {
    1916                 if( *i == nodeId) continue; // don't send to ourselfs
    1917                 sendMessage( message, *i, service );
     1917        for(size_t i=0; i<nodes.size(); i++){
     1918                NodeID& id = nodes.at(i);
     1919                if(id == this->nodeId) continue; // don't send to ourselfs
     1920                if(i+1 == nodes.size()) message->setReleasePayload(true); // release payload on last send
     1921                sendMessage( message, id, service );
    19181922        }
    19191923}
Note: See TracChangeset for help on using the changeset viewer.