00001 #include "DHTMessage.h" 00002 00003 #include<boost/foreach.hpp> 00004 00005 namespace ariba { 00006 namespace overlay { 00007 00008 vsznDefault(DHTMessage); 00009 00010 DHTMessage::DHTMessage() { 00011 this->key.setLength(0); 00012 this->ttl = 0; 00013 this->replace = false; 00014 } 00015 00016 DHTMessage::DHTMessage( const Data& key ) { 00017 // calculate hash of key 00018 this->hash = NodeID::sha1( key.getBuffer(), key.getLength() / 8 ); 00019 this->key = key.clone(); 00020 this->ttl = 0; 00021 this->replace = false; 00022 } 00023 00024 DHTMessage::DHTMessage( const Data& key, const Data& value ) { 00025 // calculate hash of key 00026 this->hash = NodeID::sha1( key.getBuffer(), key.getLength() / 8 ); 00027 this->key = key.clone(); 00028 this->values.push_back( value.clone() ); 00029 this->ttl = 0; 00030 this->replace = false; 00031 } 00032 00033 DHTMessage::DHTMessage( const Data& key, const vector<Data>& values ) { 00034 this->hash = NodeID::sha1( key.getBuffer(), key.getLength() / 8 ); 00035 this->key = key.clone(); 00036 BOOST_FOREACH(const Data value, values ) 00037 this->values.push_back( value.clone() ); 00038 this->ttl = 0; 00039 this->replace = false; 00040 } 00041 00042 DHTMessage::~DHTMessage() { 00043 this->key.release(); 00044 BOOST_FOREACH( Data& value, values ) value.release(); 00045 } 00046 00047 }}