Files
NFD/daemon/mgmt/face-status-publisher.cpp
T
Steve DiBenedetto 9f6c3642ce mgmt: add face/list support and general purpose data segementer
refs: #1245

Change-Id: I3769941022b7ed6e2a8d39622032e4e16909f645
2014-03-15 11:40:17 -07:00

77 lines
2.6 KiB
C++

/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/**
* Copyright (C) 2014 Named Data Networking Project
* See COPYING for copyright and distribution information.
*/
#include "face-status-publisher.hpp"
namespace nfd {
NFD_LOG_INIT("FaceStatusPublisher");
FaceStatusPublisher::FaceStatusPublisher(const FaceTable& faceTable,
shared_ptr<AppFace> face,
const Name& prefix)
: SegmentPublisher(face, prefix)
, m_faceTable(faceTable)
{
}
FaceStatusPublisher::~FaceStatusPublisher()
{
}
size_t
FaceStatusPublisher::generate(ndn::EncodingBuffer& outBuffer)
{
size_t totalLength = 0;
for (FaceTable::const_iterator i = m_faceTable.begin();
i != m_faceTable.end();
++i)
{
const shared_ptr<Face>& face = *i;
const FaceCounters& counters = face->getCounters();
const std::string uri = face->getUri().toString();
size_t statusLength = 0;
statusLength += prependNonNegativeIntegerBlock(outBuffer,
ndn::tlv::nfd::TotalOutgoingDataCounter,
counters.getOutData());
statusLength += prependNonNegativeIntegerBlock(outBuffer,
ndn::tlv::nfd::TotalOutgoingInterestCounter,
counters.getOutInterest());
statusLength += prependNonNegativeIntegerBlock(outBuffer,
ndn::tlv::nfd::TotalIncomingDataCounter,
counters.getInData());
statusLength += prependNonNegativeIntegerBlock(outBuffer,
ndn::tlv::nfd::TotalIncomingInterestCounter,
counters.getInInterest());
statusLength += prependByteArrayBlock(outBuffer,
ndn::tlv::nfd::Uri,
reinterpret_cast<const uint8_t*>(uri.c_str()),
uri.size());
statusLength += prependNonNegativeIntegerBlock(outBuffer,
ndn::tlv::nfd::FaceId,
face->getId());
statusLength += outBuffer.prependVarNumber(statusLength);
statusLength += outBuffer.prependVarNumber(ndn::tlv::nfd::FaceStatus);
totalLength += statusLength;
}
return totalLength;
}
} // namespace nfd