本文整理汇总了C++中NodeRef::getType方法的典型用法代码示例。如果您正苦于以下问题:C++ NodeRef::getType方法的具体用法?C++ NodeRef::getType怎么用?C++ NodeRef::getType使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NodeRef
的用法示例。
在下文中一共展示了NodeRef::getType方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: _endNeighbor
void ForwarderRank::_endNeighbor(const NodeRef &neighbor)
{
// We don't handle routing to anything but other haggle nodes:
if (neighbor->getType() != Node::TYPE_PEER)
return;
// Update our private metric regarding this node:
bubble_node_id_t neighbor_id = id_from_string(neighbor->getIdStr());
HAGGLE_DBG("HAGGLE_DBG: _endNeighbor node left: node %ld %s \n", neighbor_id, neighbor->getIdStr());
rib_timestamp = Timeval::now();
}
示例2: getModule
void
ReplicationManager::onNodeContactNew(Event *e)
{
if (getState() > MANAGER_STATE_RUNNING) {
HAGGLE_DBG("In shutdown, ignoring node contact end\n");
return;
}
if (!e) {
return;
}
NodeRef node = e->getNode();
if (node && node->getType() != Node::TYPE_UNDEFINED) {
getModule()->notifyNewContact(node);
}
}
示例3: onSendDataObjectActual
void ProtocolManager::onSendDataObjectActual(Event *e)
{
int numTx = 0;
if (!e || !e->hasData())
return;
// Get a copy to work with
DataObjectRef dObj = e->getDataObject();
// Get target list:
NodeRefList *targets = (e->getNodeList()).copy();
if (!targets) {
HAGGLE_ERR("no targets in data object when sending\n");
return;
}
unsigned int numTargets = targets->size();
// Go through all targets:
while (!targets->empty()) {
// A current target reference
NodeRef targ = targets->pop();
if (!targ) {
HAGGLE_ERR("Target num %u is NULL!\n", numTargets);
numTargets--;
continue;
}
HAGGLE_DBG("Sending to target %u - %s \n", numTargets, targ->getName().c_str());
// If we are going to loop through the node's interfaces, we need to lock the node.
targ.lock();
const InterfaceRefList *interfaces = targ->getInterfaces();
// Are there any interfaces here?
if (interfaces == NULL || interfaces->size() == 0) {
// No interfaces for target, so we generate a
// send failure event and skip the target
HAGGLE_DBG("Target %s has no interfaces\n", targ->getName().c_str());
targ.unlock();
kernel->addEvent(new Event(EVENT_TYPE_DATAOBJECT_SEND_FAILURE, dObj, targ));
numTargets--;
continue;
}
/*
Find the target interface that suits us best
(we assume that for any remote target
interface we have a corresponding local interface).
*/
InterfaceRef peerIface = NULL;
bool done = false;
InterfaceRefList::const_iterator it = interfaces->begin();
//HAGGLE_DBG("Target node %s has %lu interfaces\n", targ->getName().c_str(), interfaces->size());
for (; it != interfaces->end() && done == false; it++) {
InterfaceRef iface = *it;
// If this interface is up:
if (iface->isUp()) {
if (iface->getAddresses()->empty()) {
HAGGLE_DBG("Interface %s:%s has no addresses - IGNORING.\n",
iface->getTypeStr(), iface->getIdentifierStr());
continue;
}
switch (iface->getType()) {
#if defined(ENABLE_BLUETOOTH)
case Interface::TYPE_BLUETOOTH:
/*
Select Bluetooth only if there are no Ethernet or WiFi
interfaces.
*/
if (!iface->getAddress<BluetoothAddress>()) {
HAGGLE_DBG("Interface %s:%s has no Bluetooth address - IGNORING.\n",
iface->getTypeStr(), iface->getIdentifierStr());
break;
}
if (!peerIface)
peerIface = iface;
else if (peerIface->getType() != Interface::TYPE_ETHERNET &&
peerIface->getType() != Interface::TYPE_WIFI)
peerIface = iface;
break;
#endif
#if defined(ENABLE_ETHERNET)
case Interface::TYPE_ETHERNET:
/*
//.........这里部分代码省略.........
示例4: onIncomingDataObject
void DataManager::onIncomingDataObject(Event *e)
{
if (!e || !e->hasData())
return;
DataObjectRef& dObj = e->getDataObject();
if (!dObj) {
HAGGLE_DBG("Incoming data object event without data object!\n");
return;
}
if(dObj->isControlMessage()) { // MOS - keep control messages out of Bloom filter
return;
}
// Add the data object to the bloomfilter of the one who sent it:
NodeRef peer = e->getNode();
// JM End: Associate origin social group to DO
if (!peer || peer->getType() == Node::TYPE_UNDEFINED) {
// No valid node in event, try to figure out from interface
// Find the interface it came from:
const InterfaceRef& iface = dObj->getRemoteInterface();
if (iface) {
HAGGLE_DBG2("Incoming data object [%s] has no valid peer node but valid peer interface %s\n", DataObject::idString(dObj).c_str(), iface->getIdentifierStr());
peer = kernel->getNodeStore()->retrieve(iface);
if(peer && peer->getType() != Node::TYPE_UNDEFINED) HAGGLE_DBG2("Setting incoming data object peer node to %s\n", peer->getName().c_str());
} else {
HAGGLE_DBG("No valid peer interface in data object, cannot figure out peer node\n");
}
}
if (peer) {
if (peer->getType() != Node::TYPE_APPLICATION && peer->getType() != Node::TYPE_UNDEFINED) {
// Add the data object to the peer's bloomfilter so that
// we do not send the data object back.
HAGGLE_DBG("Adding data object [%s] to peer node %s's (%s num=%lu) bloomfilter\n",
DataObject::idString(dObj).c_str(), peer->getName().c_str(), peer->isStored() ? "stored" : "not stored", peer->getNum());
/*
LOG_ADD("%s: BLOOMFILTER:ADD %s\t%s:%s\n",
Timeval::now().getAsString().c_str(), dObj->getIdStr(),
peer->getTypeStr(), peer->getIdStr());
*/
peer->getBloomfilter()->add(dObj);
}
} else {
HAGGLE_DBG("No valid peer node for incoming data object [%s]\n", dObj->getIdStr());
}
// Check if this is a control message from an application. We do not want
// to bloat our bloomfilter with such messages, because they are sent
// everytime an application connects.
if (!dObj->isControlMessage()) {
// Add the incoming data object also to our own bloomfilter
// We do this early in order to avoid receiving duplicates in case
// the same object is received at nearly the same time from multiple neighbors
if (localBF->has(dObj)) {
HAGGLE_DBG("Data object [%s] already in our bloomfilter, marking as duplicate...\n", dObj->getIdStr());
dObj->setDuplicate();
} else {
if(!dObj->isNodeDescription()) { // MOS - local BF only contains data objects in new design
localBF->add(dObj);
HAGGLE_DBG("Adding data object [%s] to our bloomfilter, #objs=%d\n", DataObject::idString(dObj).c_str(), localBF->numObjects());
kernel->getThisNode()->getBloomfilter()->add(dObj); // MOS
if(isNodeDescUpdateOnReceptionEnabled) {
// MOS - immediately disseminate updated bloomfilter
kernel->getThisNode()->setNodeDescriptionCreateTime();
kernel->addEvent(new Event(EVENT_TYPE_NODE_DESCRIPTION_SEND));
}
}
if(!periodicBloomfilterUpdateEvent->isScheduled()) // MOS - update now happening periodically
kernel->getThisNode()->setBloomfilter(*localBF, setCreateTimeOnBloomfilterUpdate);
}
}
}