Changeset 10572 for source/ariba/overlay/BaseOverlay.cpp
- Timestamp:
- Jun 18, 2012, 1:40:59 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
source/ariba/overlay/BaseOverlay.cpp
r9971 r10572 1832 1832 1833 1833 // handle dht messages (do not route) 1834 if (overlayMsg->isDHTMessage()) 1835 return handleDHTMessage(overlayMsg); 1834 if (overlayMsg->isDHTMessage()) { 1835 bool ret = handleDHTMessage(overlayMsg); 1836 delete overlayMsg; 1837 return ret; 1838 } 1836 1839 1837 1840 // handle signaling messages (do not route!) … … 2161 2164 2162 2165 // route message to closest node 2163 if (!overlayInterface->isClosestNodeTo( msg->getDestinationNode())) {2166 if (!overlayInterface->isClosestNodeTo(dhtMsg->getHashedKey())) { 2164 2167 logging_debug("Routing DHT message to closest node " 2165 2168 << " from " << msg->getSourceNode() 2166 << " to " << msg->getDestinationNode()2169 << " to " << dhtMsg->getHashedKey() 2167 2170 ); 2168 route( msg);2169 delete msg;2171 dhtSend(msg, dhtMsg->getHashedKey()); 2172 delete dhtMsg; 2170 2173 return true; 2171 2174 } … … 2219 2222 return false; 2220 2223 } 2221 delete msg;2224 delete dhtMsg; 2222 2225 return true; 2223 2226 } … … 2239 2242 } 2240 2243 2241 // calculate hash2242 NodeID dest = NodeID::sha1(key.getBuffer(), key.getLength() / 8);2243 2244 DHTMessage dhtmsg( key, value ); 2244 2245 dhtmsg.setReplace( replace ); … … 2247 2248 OverlayMsg msg( OverlayMsg::typeDHTPut ); 2248 2249 msg.encapsulate( &dhtmsg ); 2249 dhtSend(&msg, d est);2250 dhtSend(&msg, dhtmsg.getHashedKey()); 2250 2251 } 2251 2252 … … 2255 2256 localDHT->remove(key,value); 2256 2257 2257 // calculate hash2258 NodeID dest = NodeID::sha1(key.getBuffer(), key.getLength() / 8);2259 2258 DHTMessage dhtmsg(key,value); 2260 2259 … … 2262 2261 OverlayMsg msg(OverlayMsg::typeDHTRemove); 2263 2262 msg.encapsulate( &dhtmsg ); 2264 dhtSend(&msg, d est);2263 dhtSend(&msg, dhtmsg.getHashedKey()); 2265 2264 } 2266 2265 … … 2270 2269 logging_info("DHT-Remove: Removing key=" << key ); 2271 2270 2272 // calculate hash2273 NodeID dest = NodeID::sha1(key.getBuffer(), key.getLength() / 8);2274 2271 DHTMessage dhtmsg(key); 2275 2272 … … 2277 2274 OverlayMsg msg(OverlayMsg::typeDHTRemove); 2278 2275 msg.encapsulate( &dhtmsg ); 2279 dhtSend(&msg, d est);2276 dhtSend(&msg, dhtmsg.getHashedKey()); 2280 2277 } 2281 2278 … … 2286 2283 key << " for service=" << service.toString() ); 2287 2284 2288 // calculate hash2289 NodeID dest = NodeID::sha1(key.getBuffer(), key.getLength() / 8);2290 2285 DHTMessage dhtmsg(key); 2291 2286 … … 2294 2289 msg.setService(service); 2295 2290 msg.encapsulate( &dhtmsg ); 2296 dhtSend(&msg, d est);2291 dhtSend(&msg, dhtmsg.getHashedKey()); 2297 2292 } 2298 2293 … … 2303 2298 /// set source and destination 2304 2299 msg->setSourceNode(this->nodeId); 2305 msg->setDestinationNode(dest);2306 2300 2307 2301 // local storage? yes-> put into DHT directly 2308 if (overlayInterface->isClosestNodeTo(msg->getDestinationNode())) { 2302 if (overlayInterface->isClosestNodeTo(dest)) { 2303 // be compatible with old code so set destination to hashed key 2304 msg->setDestinationNode(dest); 2305 2309 2306 Data d = data_serialize(msg); 2310 Message* m2 = new Message(d); 2311 OverlayMsg* m3 = m2->decapsulate<OverlayMsg>(); 2307 Message m2(d); 2308 OverlayMsg* m3 = m2.decapsulate<OverlayMsg>(); 2309 2312 2310 handleDHTMessage(m3); 2313 delete m2; 2311 2312 delete m3; 2314 2313 return; 2315 } 2316 2317 // send message "normally" 2318 send( msg, dest ); 2314 } else { 2315 // need to route 2316 NodeID next_hop = overlayInterface->getNextNodeId(dest); 2317 msg->setDestinationNode(next_hop); 2318 2319 send(msg, next_hop); 2320 2321 return; 2322 } 2319 2323 } 2320 2324
Note:
See TracChangeset
for help on using the changeset viewer.