mgmt: replace FaceFlags with individual fields

refs #1992

Change-Id: I41d55b3227c916a253705aaeefbe66c7c18e22a9
This commit is contained in:
Chengyu Fan committed 2014-10-08 21:56:38 -06:00
1 parent 77c8751576
commit f9c2bb19fe
7 files changed
+66 -134

No files matched your search

-48
View File
@@ -1,48 +0,0 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/**
* Copyright (c) 2014 Regents of the University of California,
* Arizona Board of Regents,
* Colorado State University,
* University Pierre & Marie Curie, Sorbonne University,
* Washington University in St. Louis,
* Beijing Institute of Technology
*
* This file is part of NFD (Named Data Networking Forwarding Daemon).
* See AUTHORS.md for complete list of NFD authors and contributors.
*
* NFD is free software: you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software Foundation,
* either version 3 of the License, or (at your option) any later version.
*
* NFD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* NFD, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
**/
#ifndef NFD_DAEMON_MGMT_FACE_FLAGS_HPP
#define NFD_DAEMON_MGMT_FACE_FLAGS_HPP
#include "face/face.hpp"
#include <ndn-cxx/management/nfd-face-flags.hpp>
namespace nfd {
inline uint64_t
getFaceFlags(const Face& face)
{
uint64_t flags = 0;
if (face.isLocal()) {
flags |= ndn::nfd::FACE_IS_LOCAL;
}
if (face.isOnDemand()) {
flags |= ndn::nfd::FACE_IS_ON_DEMAND;
}
return flags;
}
} // namespace nfd
#endif // NFD_DAEMON_MGMT_FACE_FLAGS_HPP
+30 -6
View File
@@ -24,7 +24,6 @@
*/
#include "face.hpp"
#include "face-flags.hpp"
#include "core/logger.hpp"
namespace nfd {
@@ -125,19 +124,44 @@ Face::fail(const std::string& reason)
this->onFail.clear();
}
template<typename FaceTraits>
void
Face::copyStatusTo(FaceTraits& traits) const
{
traits.setFaceId(getId())
.setRemoteUri(getRemoteUri().toString())
.setLocalUri(getLocalUri().toString());
if (isLocal()) {
traits.setFaceScope(ndn::nfd::FACE_SCOPE_LOCAL);
}
else {
traits.setFaceScope(ndn::nfd::FACE_SCOPE_NON_LOCAL);
}
if (isOnDemand()) {
traits.setFacePersistency(ndn::nfd::FACE_PERSISTENCY_ON_DEMAND);
}
else {
traits.setFacePersistency(ndn::nfd::FACE_PERSISTENCY_PERSISTENT);
}
}
template void
Face::copyStatusTo<ndn::nfd::FaceStatus>(ndn::nfd::FaceStatus&) const;
template void
Face::copyStatusTo<ndn::nfd::FaceEventNotification>(ndn::nfd::FaceEventNotification&) const;
ndn::nfd::FaceStatus
Face::getFaceStatus() const
{
ndn::nfd::FaceStatus status;
status.setFaceId(getId())
.setRemoteUri(getRemoteUri().toString())
.setLocalUri(getLocalUri().toString())
.setFlags(getFaceFlags(*this));
copyStatusTo(status);
this->getCounters().copyTo(status);
return status;
}
} //namespace nfd
+7 -1
View File
@@ -32,6 +32,7 @@
#include "face-counters.hpp"
#include <ndn-cxx/management/nfd-face-status.hpp>
#include <ndn-cxx/management/nfd-face-event-notification.hpp>
namespace nfd {
@@ -163,6 +164,12 @@ public: // attributes
const FaceUri&
getLocalUri() const;
/** \return FaceTraits data structure filled with the current FaceTraits status
*/
template<typename FaceTraits>
void
copyStatusTo(FaceTraits& traits) const;
/** \return FaceStatus data structure filled with the current Face status
*/
virtual ndn::nfd::FaceStatus
@@ -202,7 +209,6 @@ private:
friend class FaceTable;
};
inline bool
Face::isLocal() const
{
+4 -12
View File
@@ -29,7 +29,6 @@
#include "core/face-uri.hpp"
#include "core/network-interface.hpp"
#include "fw/face-table.hpp"
#include "face/face-flags.hpp"
#include "face/tcp-factory.hpp"
#include "face/udp-factory.hpp"
#include "core/config-file.hpp"
@@ -1030,11 +1029,8 @@ void
FaceManager::onAddFace(shared_ptr<Face> face)
{
ndn::nfd::FaceEventNotification notification;
notification.setKind(ndn::nfd::FACE_EVENT_CREATED)
.setFaceId(face->getId())
.setRemoteUri(face->getRemoteUri().toString())
.setLocalUri(face->getLocalUri().toString())
.setFlags(getFaceFlags(*face));
notification.setKind(ndn::nfd::FACE_EVENT_CREATED);
face->copyStatusTo(notification);
m_notificationStream.postNotification(notification);
}
@@ -1043,16 +1039,12 @@ void
FaceManager::onRemoveFace(shared_ptr<Face> face)
{
ndn::nfd::FaceEventNotification notification;
notification.setKind(ndn::nfd::FACE_EVENT_DESTROYED)
.setFaceId(face->getId())
.setRemoteUri(face->getRemoteUri().toString())
.setLocalUri(face->getLocalUri().toString())
.setFlags(getFaceFlags(*face));
notification.setKind(ndn::nfd::FACE_EVENT_DESTROYED);
face->copyStatusTo(notification);
m_notificationStream.postNotification(notification);
}
bool
FaceManager::extractLocalControlParameters(const Interest& request,
ControlParameters& parameters,
-65
View File
@@ -1,65 +0,0 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/**
* Copyright (c) 2014 Regents of the University of California,
* Arizona Board of Regents,
* Colorado State University,
* University Pierre & Marie Curie, Sorbonne University,
* Washington University in St. Louis,
* Beijing Institute of Technology
*
* This file is part of NFD (Named Data Networking Forwarding Daemon).
* See AUTHORS.md for complete list of NFD authors and contributors.
*
* NFD is free software: you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software Foundation,
* either version 3 of the License, or (at your option) any later version.
*
* NFD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* NFD, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
**/
#include "face/face-flags.hpp"
#include "tests/test-common.hpp"
#include "tests/daemon/face/dummy-face.hpp"
namespace nfd {
namespace tests {
BOOST_FIXTURE_TEST_SUITE(FaceFaceFlags, BaseFixture)
template<typename DummyFaceBase>
class DummyOnDemandFace : public DummyFaceBase
{
public:
DummyOnDemandFace()
{
this->setOnDemand(true);
}
};
BOOST_AUTO_TEST_CASE(Get)
{
DummyFace face1;
BOOST_CHECK_EQUAL(getFaceFlags(face1), 0);
DummyLocalFace face2;
BOOST_CHECK_EQUAL(getFaceFlags(face2), static_cast<uint64_t>(ndn::nfd::FACE_IS_LOCAL));
DummyOnDemandFace<DummyFace> face3;
BOOST_CHECK_EQUAL(getFaceFlags(face3), static_cast<uint64_t>(ndn::nfd::FACE_IS_ON_DEMAND));
DummyOnDemandFace<DummyLocalFace> face4;
BOOST_CHECK_EQUAL(getFaceFlags(face4), static_cast<uint64_t>(ndn::nfd::FACE_IS_LOCAL |
ndn::nfd::FACE_IS_ON_DEMAND));
}
BOOST_AUTO_TEST_SUITE_END()
} // namespace tests
} // namespace nfd
+3
View File
@@ -1493,6 +1493,9 @@ public:
BOOST_CHECK_EQUAL(notification.getFaceId(), expectedFaceEvent.getFaceId());
BOOST_CHECK_EQUAL(notification.getRemoteUri(), expectedFaceEvent.getRemoteUri());
BOOST_CHECK_EQUAL(notification.getLocalUri(), expectedFaceEvent.getLocalUri());
BOOST_CHECK_EQUAL(notification.getFaceScope(), expectedFaceEvent.getFaceScope());
BOOST_CHECK_EQUAL(notification.getFacePersistency(), expectedFaceEvent.getFacePersistency());
BOOST_CHECK_EQUAL(notification.getLinkType(), expectedFaceEvent.getLinkType());
}
bool
@@ -29,7 +29,6 @@
#include "mgmt/face-status-publisher.hpp"
#include "mgmt/app-face.hpp"
#include "mgmt/internal-face.hpp"
#include "face/face-flags.hpp"
#include "fw/forwarder.hpp"
#include "tests/test-common.hpp"
@@ -135,7 +134,28 @@ public:
BOOST_CHECK_EQUAL(status.getFaceId(), reference->getId());
BOOST_CHECK_EQUAL(status.getRemoteUri(), reference->getRemoteUri().toString());
BOOST_CHECK_EQUAL(status.getLocalUri(), reference->getLocalUri().toString());
BOOST_CHECK_EQUAL(status.getFlags(), getFaceFlags(*reference));
if (reference->isLocal()) {
BOOST_CHECK_EQUAL(status.getFaceScope(), ndn::nfd::FACE_SCOPE_LOCAL);
}
else {
BOOST_CHECK_EQUAL(status.getFaceScope(), ndn::nfd::FACE_SCOPE_NON_LOCAL);
}
if (reference->isOnDemand()) {
BOOST_CHECK_EQUAL(status.getFacePersistency(), ndn::nfd::FACE_PERSISTENCY_ON_DEMAND);
}
else {
BOOST_CHECK_EQUAL(status.getFacePersistency(), ndn::nfd::FACE_PERSISTENCY_PERSISTENT);
}
if (reference->isMultiAccess()) {
BOOST_CHECK_EQUAL(status.getLinkType(), ndn::nfd::LINK_TYPE_MULTI_ACCESS);
}
else {
BOOST_CHECK_EQUAL(status.getLinkType(), ndn::nfd::LINK_TYPE_POINT_TO_POINT);
}
BOOST_CHECK_EQUAL(status.getNInInterests(), counters.getNInInterests());
BOOST_CHECK_EQUAL(status.getNInDatas(), counters.getNInDatas());
BOOST_CHECK_EQUAL(status.getNOutInterests(), counters.getNOutInterests());