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().
{ port = -1; key = OverlayKey(); // unspecified key, note: OverlayKey::UNSPECIFIED_KEY might not be initialized here }
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.
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.
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.
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>().
{ if ( this->isUnspecified() || handle.isUnspecified() ) opp_error("NodeHandle: Trying to compare unspecified NodeHandle!"); }
TransportAddress * NodeHandle::dup | ( | ) | const [virtual] |
returns a copy of the NodeHandle
Reimplemented from TransportAddress.
Definition at line 206 of file NodeHandle.cc.
{ return new NodeHandle(*this); }
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(), NTree::checkParentTimeout(), Pastry::checkProxCache(), oversim::Chord::closestPreceedingNode(), NTree::collapseTree(), GiaNeighborCandidateList::contains(), Nps::coordsReqRpcResponse(), KBRTestApp::createDestKey(), Quon::deleteSite(), KBRTestApp::deliver(), Broose::displayBucketState(), NTree::divideNode(), 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(), NTree::handleAddMessage(), PubSubMMOG::handleAdoptChildCall(), PubSubMMOG::handleAdoptChildResponse(), Vast::handleAppMessage(), Quon::handleAppMessage(), oversim::Nice::handleAppMessage(), BaseOverlay::handleBaseOverlayMessage(), Kademlia::handleBucketRefreshTimerExpired(), NTree::handleCollapseMessage(), BaseApp::handleCommonAPIMessage(), oversim::Koorde::handleDeBruijnTimerExpired(), NTree::handleDivideCall(), Pastry::handleFailedNode(), oversim::Chord::handleFixFingersTimerExpired(), CBRDHT::handleGetCAPIRequest(), PubSubMMOG::handleHelpResponse(), PubSubMMOG::handleIntermediateResponse(), Quon::handleInvalidNode(), NTree::handleJoinCall(), Scribe::handleJoinMessage(), Scribe::handleJoinResponse(), NTree::handleJoinResponse(), oversim::Chord::handleJoinTimerExpired(), Broose::handleJoinTimerExpired(), KBRTestApp::handleLookupResponse(), DHT::handleLookupResponse(), CBRDHT::handleLookupResponse(), BootstrapList::handleLookupResponse(), XmlRpcInterface::handleMessage(), BaseOverlay::handleMessage(), BaseApp::handleMessage(), NTree::handleMove(), PubSubMMOG::handleMoveMessage(), oversim::Chord::handleNewSuccessorHint(), Quon::handleNodeLeave(), Vast::handleNodeLeaveNotification(), Quon::handleNodeMove(), PubSubMMOG::handlePingCall(), Scribe::handlePublishCall(), Scribe::handlePublishResponse(), XmlRpcInterface::handleReadyMessage(), P2pns::handleReadyMessage(), NTree::handleReplaceMessage(), BasePastry::handleRequestMessage(), IterativePathLookup::handleResponse(), oversim::Koorde::handleRpcCall(), oversim::Chord::handleRpcCall(), oversim::Koorde::handleRpcDeBruijnRequest(), oversim::Chord::handleRpcNotifyResponse(), Scribe::handleRpcResponse(), PubSubMMOG::handleRpcResponse(), NTree::handleRpcResponse(), oversim::Koorde::handleRpcResponse(), KBRTestApp::handleRpcResponse(), Kademlia::handleRpcResponse(), oversim::Chord::handleRpcResponse(), Broose::handleRpcResponse(), BootstrapList::handleRpcResponse(), oversim::Chord::handleRpcStabilizeResponse(), PubSubMMOG::handleRpcTimeout(), PubSubLobby::handleRpcTimeout(), NTree::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(), BaseOverlay::internalHandleRpcTimeout(), BaseOverlay::internalSendRpcResponse(), BaseApp::internalSendRpcResponse(), 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< MarkedNodeHandle >::key(), KeyExtractor< KademliaBucketEntry >::key(), KeyExtractor< LookupEntry >::key(), BrooseBucket::keyInRange(), NTree::leaveGroup(), 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(), NTree::routeViaNTree(), Kademlia::routingAdd(), Kademlia::routingBucketIndex(), Kademlia::routingInit(), oversim::Chord::rpcNotify(), Vast::sendDiscardNode(), Vast::sendMessage(), Quon::sendMessage(), NTree::sendMessage(), BaseOverlay::sendMessageToUDP(), BaseApp::sendMessageToUDP(), IterativePathLookup::sendRpc(), BaseRpc::sendRpcResponse(), Gia::sendSearchResponseMessage(), Kademlia::sendSiblingFindNodeCall(), BasePastry::sendStateTables(), Vast::sendToApp(), Quon::sendToApp(), NTree::sendToGroup(), BaseOverlay::sendToKey(), Kademlia::setBucketUsage(), PastryStateObject::specialCloserCondition(), IterativeLookup::start(), PubSubMMOG::startTimer(), IterativeLookup::stop(), Scribe::subscribeToGroup(), Scribe::update(), DHT::update(), P2pns::updateIdCacheWithNewTransport(), oversim::ChordSuccessorList::updateList(), NeighborCache::updateNcsInfo(), Gia::updateNeighborList(), NeighborCache::updateNode(), Quon::updateThisSite(), Broose::updateTooltip(), oversim::Koorde::walkDeBruijnList(), and oversim::Koorde::walkSuccessorList().
{ return key; }
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(), NTree::handleDivideResponse(), 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::handleRpcFixfingersResponse(), oversim::Chord::handleRpcJoinResponse(), oversim::Chord::handleRpcStabilizeResponse(), PubSubMMOG::handleSubscriptionBackup(), Scribe::handleTimerEvent(), Gia::handleTimerEvent(), oversim::Chord::handleTimerEvent(), Pastry::handleUDPMessage(), PubSubMMOG::handleUnsubscribeBackup(), PastryLeafSet::insertLeaf(), BaseRpc::internalHandleRpcMessage(), BaseOverlay::internalSendRpcResponse(), BaseApp::internalSendRpcResponse(), 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(), Vast::sendMessage(), PubSubMMOG::sendMessageToChildren(), BaseOverlay::sendToKey(), PubSubMMOG::unsubscribeChild(), and P2pns::updateIdCacheWithNewTransport().
{ return (ip.isUnspecified() || key.isUnspecified()); }
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().
{ //cMessage::netUnpack(b); doUnpacking(b,this->ip); doUnpacking(b,this->key); doUnpacking(b,this->port); }
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.
{ assertUnspecified( rhs ); return !operator==(rhs); }
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>=().
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.
{ return !operator>(rhs); }
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!=().
{ assertUnspecified(rhs); return (this->port == rhs.port && this->ip == rhs.ip && this->key == rhs.key); }
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<=().
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.
{ return !operator<(rhs); }
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(), NTree::initializeOverlay(), BaseOverlay::join(), MyOverlay::joinOverlay(), NodeHandle(), Vast::sendDiscardNode(), MyOverlay::setOwnNodeID(), and BaseOverlay::setOwnNodeID().
{ this->key = key; }
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(), NTree::collapseTree(), Nps::coordsReqRpcResponse(), PastryRoutingTable::failedNode(), PastryLeafSet::failedNode(), PastryRoutingTable::findCloserNode(), PastryNeighborhoodSet::findCloserNode(), PastryLeafSet::findCloserNode(), GiaNeighborCandidateList::get(), GlobalNodeList::getBootstrapNode(), BootstrapList::getBootstrapNode(), NTreeNode::getChildForPos(), 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().