This class implements a node handle. More...
#include <NodeHandle.h>
Public Types | |
typedef UNORDERED_SET < NodeHandle, hashFcn > | Set |
a hash_set of NodeHandles | |
Public Member Functions | |
NodeHandle () | |
Constructs an unspecified NodeHandle. | |
virtual | ~NodeHandle () |
Standard destructor. | |
NodeHandle (const NodeHandle &handle) | |
Copy constructor. | |
NodeHandle (const OverlayKey &key, const IPvXAddress &ip, int port) | |
Complete constructor. | |
NodeHandle (const TransportAddress &ta) | |
Constructor to generate a NodeHandle from a TransportAddress. | |
NodeHandle (const OverlayKey &key, const TransportAddress &ta) | |
Constructor to generate a NodeHandle from an existing OverlayKey and TransportAddress. | |
bool | operator== (const NodeHandle &rhs) const |
compares this NodeHandle to another given NodeHandle | |
bool | operator!= (const NodeHandle &rhs) const |
compares this NodeHandle to another given NodeHandle | |
bool | operator< (const NodeHandle &rhs) const |
compares this to a given NodeHandle | |
bool | operator> (const NodeHandle &rhs) const |
compares this to a given NodeHandle | |
bool | operator<= (const NodeHandle &rhs) const |
compares this to a given NodeHandle | |
bool | operator>= (const NodeHandle &rhs) const |
compares this to a given NodeHandle | |
NodeHandle & | operator= (const NodeHandle &rhs) |
assigns key, ip and port of rhs to this->key, this->ip and this->port | |
void | setKey (const OverlayKey &key) |
saves given key to NodeHandle::key | |
const OverlayKey & | getKey () const |
returns key of this NodeHandle | |
bool | isUnspecified () const |
indicates if this NodeHandle is specified | |
virtual void | netPack (cCommBuffer *b) |
serializes the object into a buffer | |
virtual void | netUnpack (cCommBuffer *b) |
deserializes the object from a buffer | |
virtual TransportAddress * | dup () const |
returns a copy of the NodeHandle | |
Static Public Attributes | |
static const NodeHandle | UNSPECIFIED_NODE |
the unspecified NodeHandle | |
Protected Attributes | |
OverlayKey | key |
the OverlayKey of this NodeHandle | |
Private Member Functions | |
void | assertUnspecified (const NodeHandle &handle) const |
throws an opp_error if this or handle is unspecified | |
Friends | |
std::ostream & | operator<< (std::ostream &os, const NodeHandle &n) |
standard output stream for NodeHandle, gives out ip, port and key |
This class implements a node handle.
It covers the complete node information, like IP-Address, port, NodeKey and some additional flags for Simulation behaviour. The information can be sparse, so parts can be omited by setting the property to an unspecified value.
Definition at line 50 of file NodeHandle.h.
typedef UNORDERED_SET<NodeHandle, hashFcn> NodeHandle::Set |
a hash_set of NodeHandles
Reimplemented from TransportAddress.
Definition at line 53 of file NodeHandle.h.
NodeHandle::NodeHandle | ( | ) |
Constructs an unspecified NodeHandle.
Definition at line 49 of file NodeHandle.cc.
Referenced by dup().
00050 { 00051 port = -1; 00052 key = OverlayKey(); // unspecified key, note: OverlayKey::UNSPECIFIED_KEY might not be initialized here 00053 }
virtual NodeHandle::~NodeHandle | ( | ) | [inline, virtual] |
NodeHandle::NodeHandle | ( | const NodeHandle & | handle | ) |
Copy constructor.
handle | The NodeHandle to copy |
Definition at line 56 of file NodeHandle.cc.
NodeHandle::NodeHandle | ( | const OverlayKey & | key, | |
const IPvXAddress & | ip, | |||
int | port | |||
) |
Complete constructor.
key | The OverlayKey | |
ip | The IPvXAddress | |
port | The UDP-Port |
Definition at line 71 of file NodeHandle.cc.
00073 { 00074 this->setAddress(ip); 00075 this->setPort(port); 00076 this->setKey(key); 00077 }
NodeHandle::NodeHandle | ( | const TransportAddress & | ta | ) |
Constructor to generate a NodeHandle from a TransportAddress.
The key will be unspecified.
ta | transport address |
Definition at line 63 of file NodeHandle.cc.
00064 { 00065 this->setAddress(ta.getAddress()); 00066 this->setPort(ta.getPort()); 00067 this->setKey(OverlayKey::UNSPECIFIED_KEY); 00068 }
NodeHandle::NodeHandle | ( | const OverlayKey & | key, | |
const TransportAddress & | ta | |||
) |
Constructor to generate a NodeHandle from an existing OverlayKey and TransportAddress.
key | the overlay key | |
ta | transport address |
Definition at line 79 of file NodeHandle.cc.
00080 { 00081 this->setAddress(ta.getAddress()); 00082 this->setPort(ta.getPort()); 00083 this->setKey(key); 00084 }
void NodeHandle::assertUnspecified | ( | const NodeHandle & | handle | ) | const [inline, private] |
throws an opp_error if this or handle is unspecified
handle | the NodeHandle to check |
Definition at line 183 of file NodeHandle.cc.
Referenced by operator!=(), operator<(), operator==(), and operator>().
00184 { 00185 if ( this->isUnspecified() || handle.isUnspecified() ) 00186 opp_error("NodeHandle: Trying to compare unspecified NodeHandle!"); 00187 }
TransportAddress * NodeHandle::dup | ( | ) | const [virtual] |
returns a copy of the NodeHandle
Reimplemented from TransportAddress.
Definition at line 206 of file NodeHandle.cc.
00207 { 00208 return new NodeHandle(*this); 00209 }
const OverlayKey & NodeHandle::getKey | ( | ) | const |
returns key of this NodeHandle
Definition at line 176 of file NodeHandle.cc.
Referenced by BrooseBucket::add(), GiaMessageBookkeeping::addMessage(), PastryRoutingTable::addRow(), IterativeLookup::addSibling(), Quon::addSite(), oversim::ChordSuccessorList::addSuccessor(), BasePastry::baseChangeState(), BasePastry::baseInit(), BaseOverlay::bindToPort(), BootstrapNodeHandle::BootstrapNodeHandle(), BrooseHandle::BrooseHandle(), BaseApp::callRoute(), BaseOverlay::callUpdate(), Vast::changeState(), Quon::changeState(), Pastry::changeState(), Gia::changeState(), oversim::Chord::changeState(), Bamboo::changeState(), Pastry::checkProxCache(), oversim::Chord::closestPreceedingNode(), GiaNeighborCandidateList::contains(), Nps::coordsReqRpcResponse(), KBRTestApp::createDestKey(), Quon::deleteSite(), KBRTestApp::deliver(), Broose::displayBucketState(), Bamboo::doGlobalTuning(), Bamboo::doLocalTuning(), Pastry::doRoutingTableMaintenance(), Pastry::doSecondStage(), ConnectivityProbe::extractTopology(), PastryRoutingTable::findCloserNode(), oversim::Koorde::findDeBruijnHop(), MyOverlay::findNode(), oversim::Koorde::findNode(), oversim::Chord::findNode(), Broose::findNode(), BaseOverlay::findNodeRpc(), BasePastry::finishOverlay(), Gia::forwardMessage(), Gia::forwardSearchResponseMessage(), PastryLeafSet::getBiggestKey(), PastryLeafSet::getDestinationNode(), Quon::getKey(), Gia::getRoute(), PastryLeafSet::getSmallestKey(), PubSubMMOG::handleAdoptChildCall(), PubSubMMOG::handleAdoptChildResponse(), Vast::handleAppMessage(), Quon::handleAppMessage(), BaseOverlay::handleBaseOverlayMessage(), Kademlia::handleBucketRefreshTimerExpired(), BaseApp::handleCommonAPIMessage(), oversim::Koorde::handleDeBruijnTimerExpired(), Pastry::handleFailedNode(), oversim::Chord::handleFixFingersTimerExpired(), CBRDHT::handleGetCAPIRequest(), PubSubMMOG::handleHelpResponse(), PubSubMMOG::handleIntermediateResponse(), Scribe::handleJoinMessage(), Scribe::handleJoinResponse(), oversim::Chord::handleJoinTimerExpired(), Broose::handleJoinTimerExpired(), KBRTestApp::handleLookupResponse(), DHT::handleLookupResponse(), CBRDHT::handleLookupResponse(), BootstrapList::handleLookupResponse(), XmlRpcInterface::handleMessage(), BaseOverlay::handleMessage(), BaseApp::handleMessage(), PubSubMMOG::handleMoveMessage(), oversim::Chord::handleNewSuccessorHint(), Vast::handleNodeLeaveNotification(), PubSubMMOG::handlePingCall(), Scribe::handlePublishCall(), Scribe::handlePublishResponse(), DHT::handlePutRequest(), CBRDHT::handlePutRequest(), XmlRpcInterface::handleReadyMessage(), P2pns::handleReadyMessage(), BasePastry::handleRequestMessage(), IterativePathLookup::handleResponse(), oversim::Koorde::handleRpcCall(), oversim::Chord::handleRpcCall(), oversim::Koorde::handleRpcDeBruijnRequest(), oversim::Chord::handleRpcNotifyResponse(), Scribe::handleRpcResponse(), PubSubMMOG::handleRpcResponse(), oversim::Koorde::handleRpcResponse(), KBRTestApp::handleRpcResponse(), Kademlia::handleRpcResponse(), oversim::Chord::handleRpcResponse(), Broose::handleRpcResponse(), BootstrapList::handleRpcResponse(), oversim::Chord::handleRpcStabilizeResponse(), PubSubMMOG::handleRpcTimeout(), PubSubLobby::handleRpcTimeout(), oversim::Koorde::handleRpcTimeout(), Kademlia::handleRpcTimeout(), oversim::Chord::handleRpcTimeout(), Broose::handleRpcTimeout(), oversim::Chord::handleStabilizeTimerExpired(), Pastry::handleStateMessage(), Bamboo::handleStateMessage(), Scribe::handleTimerEvent(), Pastry::handleTimerEvent(), P2pns::handleTimerEvent(), MyOverlay::handleTimerEvent(), DHTTestApp::handleTimerEvent(), DHT::handleTimerEvent(), CBRDHT::handleTimerEvent(), Bamboo::handleTimerEvent(), Vast::handleUDPMessage(), Quon::handleUDPMessage(), Pastry::handleUDPMessage(), Gia::handleUDPMessage(), Bamboo::handleUDPMessage(), Scribe::handleUpperMessage(), SimpleGameClient::initializeApp(), BootstrapList::initializeApp(), BrooseBucket::initializeBucket(), oversim::Chord::initializeFriendModules(), BaseRpc::internalHandleRpcMessage(), PastryStateObject::isCloser(), PastryLeafSet::isClosestNode(), MyOverlay::isSiblingFor(), Kademlia::isSiblingFor(), oversim::Chord::isSiblingFor(), Broose::isSiblingFor(), BasePastry::isSiblingFor(), BaseOverlay::join(), oversim::Chord::joinForeignPartition(), Kademlia::joinOverlay(), KeyExtractor< ProxNodeHandle >::key(), KeyExtractor< NodeHandle >::key(), KeyExtractor< KademliaBucketEntry >::key(), KeyExtractor< LookupEntry >::key(), BrooseBucket::keyInRange(), XmlRpcInterface::localLookup(), BootstrapList::locateBootstrapNode(), IterativeLookup::lookup(), SendToKeyListener::lookupFinished(), PastryRoutingTable::lookupNextHop(), BaseOverlay::lookupRpc(), PastryRoutingTable::mergeNode(), PastryLeafSet::mergeNode(), Pastry::mergeState(), BaseOverlay::neighborSet(), BasePastry::newLeafs(), BrooseHandle::operator!=(), operator<<(), GiaNode::operator=(), BrooseHandle::operator=(), BrooseHandle::operator==(), BrooseBucket::output(), P2pns::p2pnsRegisterRpc(), BasePastry::pingNodes(), Pastry::pingResponse(), oversim::Chord::pingResponse(), BootstrapList::pingResponse(), BasePastry::pingResponse(), oversim::Chord::pingTimeout(), BootstrapList::pingTimeout(), BasePastry::pingTimeout(), Quon::processAliveTimer(), Gia::processSearchMessage(), BasePastry::proxCallback(), Quon::purgeSites(), BaseOverlay::route(), Kademlia::routingAdd(), Kademlia::routingBucketIndex(), Kademlia::routingInit(), oversim::Chord::rpcNotify(), Vast::sendDiscardNode(), Vast::sendMessage(), Quon::sendMessage(), BaseOverlay::sendMessageToUDP(), BaseApp::sendMessageToUDP(), IterativePathLookup::sendRpc(), Gia::sendSearchResponseMessage(), Kademlia::sendSiblingFindNodeCall(), BasePastry::sendStateTables(), Vast::sendToApp(), Quon::sendToApp(), BaseOverlay::sendToKey(), Kademlia::setBucketUsage(), PastryStateObject::specialCloserCondition(), IterativeLookup::start(), PubSubMMOG::startTimer(), IterativeLookup::stop(), Scribe::subscribeToGroup(), Scribe::update(), DHT::update(), oversim::ChordSuccessorList::updateList(), NeighborCache::updateNcsInfo(), NeighborCache::updateNode(), Quon::updateThisSite(), Broose::updateTooltip(), oversim::Koorde::walkDeBruijnList(), and oversim::Koorde::walkSuccessorList().
00177 { 00178 return key; 00179 }
bool NodeHandle::isUnspecified | ( | ) | const |
indicates if this NodeHandle is specified
Reimplemented from TransportAddress.
Definition at line 87 of file NodeHandle.cc.
Referenced by Gia::acceptNode(), GiaNeighborCandidateList::add(), assertUnspecified(), Vast::buildVoronoi(), BaseOverlay::callUpdate(), Gia::changeState(), oversim::Chord::changeState(), Scribe::checkGroupEmpty(), oversim::Chord::closestPreceedingNode(), PubSubLobby::failedNode(), PastryRoutingTable::findCloserNode(), PastryLeafSet::findCloserNode(), PastryRoutingTable::findCloserNodes(), oversim::Koorde::findDeBruijnHop(), oversim::Chord::findNode(), BasePastry::findNode(), Gia::forwardMessage(), Gia::forwardSearchResponseMessage(), GiaNeighbors::get(), GlobalNodeList::getBootstrapNode(), BaseApp::handleCommonAPIMessage(), oversim::Koorde::handleFailedNode(), oversim::Chord::handleFailedNode(), PubSubMMOG::handleIntermediateResponse(), PubSubLobby::handleJoin(), PubSubMMOG::handleJoinResponse(), PubSubMMOG::handleMove(), PubSubMMOG::handlePingCallTimeout(), DHT::handlePutRequest(), CBRDHT::handlePutRequest(), PubSubLobby::handleRespCall(), oversim::Koorde::handleRpcDeBruijnRequest(), oversim::Chord::handleRpcJoinResponse(), oversim::Chord::handleRpcStabilizeResponse(), Scribe::handleTimerEvent(), Gia::handleTimerEvent(), oversim::Chord::handleTimerEvent(), Pastry::handleUDPMessage(), PastryLeafSet::insertLeaf(), PastryStateObject::isCloser(), oversim::Chord::isSiblingFor(), Gia::joinOverlay(), BootstrapList::locateBootstrapNode(), PastryRoutingTable::lookupNextHop(), BrooseHandle::operator!=(), operator<<(), BrooseHandle::operator==(), BasePastry::pingNodes(), BootstrapList::pingResponse(), BasePastry::pingResponse(), BasePastry::prePing(), PastryRoutingTable::repair(), Kademlia::routingAdd(), oversim::Chord::rpcFixfingers(), oversim::Chord::rpcJoin(), oversim::Chord::rpcNotify(), oversim::Chord::rpcStabilize(), PubSubMMOG::sendMessageToChildren(), BaseOverlay::sendToKey(), and PubSubMMOG::unsubscribeChild().
00088 { 00089 return (ip.isUnspecified() || key.isUnspecified()); 00090 }
void NodeHandle::netPack | ( | cCommBuffer * | b | ) | [virtual] |
serializes the object into a buffer
b | the buffer |
Definition at line 190 of file NodeHandle.cc.
Referenced by doPacking().
void NodeHandle::netUnpack | ( | cCommBuffer * | b | ) | [virtual] |
deserializes the object from a buffer
b | the buffer |
Definition at line 198 of file NodeHandle.cc.
Referenced by doUnpacking().
00199 { 00200 //cMessage::netUnpack(b); 00201 doUnpacking(b,this->ip); 00202 doUnpacking(b,this->key); 00203 doUnpacking(b,this->port); 00204 }
bool NodeHandle::operator!= | ( | const NodeHandle & | rhs | ) | const |
compares this NodeHandle to another given NodeHandle
rhs | the NodeHandle this is compared to |
Definition at line 111 of file NodeHandle.cc.
00112 { 00113 assertUnspecified( rhs ); 00114 return !operator==(rhs); 00115 }
bool NodeHandle::operator< | ( | const NodeHandle & | rhs | ) | const |
compares this to a given NodeHandle
rhs | the NodeHandle this is compared to |
Definition at line 118 of file NodeHandle.cc.
Referenced by operator>=().
00119 { 00120 assertUnspecified(rhs); 00121 int cmp = key.compareTo(rhs.key); 00122 if (cmp < 0) { 00123 return true; 00124 } else if (cmp > 0) { 00125 return false; 00126 } else if (ip < rhs.ip) { 00127 return true; 00128 } else if (rhs.ip < ip) { 00129 return false; 00130 } else if (port < rhs.port) { 00131 return true; 00132 } 00133 00134 return false; 00135 }
bool NodeHandle::operator<= | ( | const NodeHandle & | rhs | ) | const |
compares this to a given NodeHandle
rhs | the NodeHandle this is compared to |
Definition at line 158 of file NodeHandle.cc.
00159 { 00160 return !operator>(rhs); 00161 }
NodeHandle & NodeHandle::operator= | ( | const NodeHandle & | rhs | ) |
assigns key, ip and port of rhs to this->key, this->ip and this->port
rhs | the NodeHandle with the defined key, ip and port |
Reimplemented in GiaNode.
Definition at line 93 of file NodeHandle.cc.
bool NodeHandle::operator== | ( | const NodeHandle & | rhs | ) | const |
compares this NodeHandle to another given NodeHandle
rhs | the NodeHandle this is compared to |
Definition at line 103 of file NodeHandle.cc.
Referenced by operator!=().
00104 { 00105 assertUnspecified(rhs); 00106 return (this->port == rhs.port && this->ip == rhs.ip && 00107 this->key == rhs.key); 00108 }
bool NodeHandle::operator> | ( | const NodeHandle & | rhs | ) | const |
compares this to a given NodeHandle
rhs | the NodeHandle this is compared to |
Definition at line 138 of file NodeHandle.cc.
Referenced by operator<=().
00139 { 00140 assertUnspecified(rhs); 00141 int cmp = key.compareTo(rhs.key); 00142 if (cmp > 0) { 00143 return true; 00144 } else if (cmp < 0) { 00145 return false; 00146 } else if (rhs.ip < ip) { 00147 return true; 00148 } else if (ip < rhs.ip) { 00149 return false; 00150 } else if (port > rhs.port) { 00151 return true; 00152 } 00153 00154 return false; 00155 }
bool NodeHandle::operator>= | ( | const NodeHandle & | rhs | ) | const |
compares this to a given NodeHandle
rhs | the NodeHandle this is compared to |
Definition at line 164 of file NodeHandle.cc.
00165 { 00166 return !operator<(rhs); 00167 }
void NodeHandle::setKey | ( | const OverlayKey & | key | ) |
saves given key to NodeHandle::key
key | the given key |
Definition at line 170 of file NodeHandle.cc.
Referenced by Nps::coordsReqRpcResponse(), BaseOverlay::initialize(), Vast::initializeOverlay(), Quon::initializeOverlay(), PubSubMMOG::initializeOverlay(), PubSubLobby::initializeOverlay(), BaseOverlay::join(), MyOverlay::joinOverlay(), NodeHandle(), Vast::sendDiscardNode(), MyOverlay::setOwnNodeID(), and BaseOverlay::setOwnNodeID().
std::ostream& operator<< | ( | std::ostream & | os, | |
const NodeHandle & | n | |||
) | [friend] |
standard output stream for NodeHandle, gives out ip, port and key
os | the ostream | |
n | the NodeHandle |
Definition at line 30 of file NodeHandle.cc.
OverlayKey NodeHandle::key [protected] |
the OverlayKey of this NodeHandle
Definition at line 56 of file NodeHandle.h.
Referenced by BootstrapNodeHandle::BootstrapNodeHandle(), BrooseHandle::BrooseHandle(), getKey(), isUnspecified(), netPack(), netUnpack(), NodeHandle(), BrooseHandle::operator!=(), operator<(), operator<<(), operator=(), GiaNode::operator=(), BrooseHandle::operator=(), operator==(), BrooseHandle::operator==(), and operator>().
const NodeHandle NodeHandle::UNSPECIFIED_NODE [static] |
the unspecified NodeHandle
Reimplemented from TransportAddress.
Reimplemented in ProxNodeHandle, and GiaNode.
Definition at line 107 of file NodeHandle.h.
Referenced by PastryLeafSet::balanceLeafSet(), oversim::Koorde::changeState(), oversim::Chord::changeState(), oversim::Chord::closestPreceedingNode(), Nps::coordsReqRpcResponse(), PastryRoutingTable::failedNode(), PastryLeafSet::failedNode(), PastryRoutingTable::findCloserNode(), PastryNeighborhoodSet::findCloserNode(), PastryLeafSet::findCloserNode(), GiaNeighborCandidateList::get(), GlobalNodeList::getBootstrapNode(), BootstrapList::getBootstrapNode(), PastryStateObject::getDestinationNode(), PastryLeafSet::getDestinationNode(), GiaMessageBookkeeping::getNextHop(), GlobalNodeList::getRandomNode(), DHTDataStorage::getSourceNode(), oversim::ChordSuccessorList::getSuccessor(), PubSubMMOG::handleBackupCallTimeout(), BaseApp::handleCommonAPIMessage(), oversim::Koorde::handleFailedNode(), oversim::ChordFingerTable::handleFailedNode(), oversim::Chord::handleFailedNode(), IterativePathLookup::handleFailedNodeResponse(), PubSubMMOG::handlePingCallTimeout(), Scribe::handlePublishResponse(), oversim::Chord::handleStabilizeTimerExpired(), IterativePathLookup::handleTimeout(), PastryLeafSet::initializeSet(), BaseRpc::internalHandleRpcMessage(), BaseOverlay::internalSendRpcResponse(), BaseApp::internalSendRpcResponse(), PastryRoutingTable::lookupNextHop(), PubSubSubspace::PubSubSubspace(), PubSubSubspaceResponsible::PubSubSubspaceResponsible(), QuonSite::QuonSite(), oversim::ChordFingerTable::removeFinger(), ScribeGroup::ScribeGroup(), oversim::ChordFingerTable::setFinger(), Site::Site(), oversim::ChordFingerTable::updateFinger(), and oversim::Koorde::walkDeBruijnList().